1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | #!/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(), |