diff options
Diffstat (limited to 'misc/openlayers/tools/shrinksafe.py')
-rwxr-xr-x | misc/openlayers/tools/shrinksafe.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/misc/openlayers/tools/shrinksafe.py b/misc/openlayers/tools/shrinksafe.py new file mode 100755 index 0000000..a42e941 --- /dev/null +++ b/misc/openlayers/tools/shrinksafe.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python +# +# Script to provide a wrapper around the ShrinkSafe "web service" +# <http://shrinksafe.dojotoolkit.org/> +# + +# +# We use this script for two reasons: +# +# * This avoids having to install and configure Java and the standalone +# ShrinkSafe utility. +# +# * The current ShrinkSafe standalone utility was broken when we last +# used it. +# + +import sys + +import urllib +import urllib2 + +URL_SHRINK_SAFE = "http://shrinksafe.dojotoolkit.org/shrinksafe.php" + +# This would normally be dynamically generated: +BOUNDARY_MARKER = "---------------------------72288400411964641492083565382" + +if __name__ == "__main__": + ## Grab the source code + try: + sourceFilename = sys.argv[1] + except: + print "Usage: %s (<source filename>|-)" % sys.argv[0] + raise SystemExit + + if sourceFilename == "-": + sourceCode = sys.stdin.read() + sourceFilename = "stdin.js" + else: + sourceCode = open(sourceFilename).read() + + ## Create the request replicating posting of the form from the web page + request = urllib2.Request(url=URL_SHRINK_SAFE) + request.add_header("Content-Type", + "multipart/form-data; boundary=%s" % BOUNDARY_MARKER) + request.add_data(""" +--%s +Content-Disposition: form-data; name="shrinkfile[]"; filename="%s" +Content-Type: application/x-javascript + +%s +""" % (BOUNDARY_MARKER, sourceFilename, sourceCode)) + + ## Deliver the result + print urllib2.urlopen(request).read(), |