multipartposthandler-0.1.0.orig/0000755000175000017500000000000011402536157017136 5ustar georgeskgeorgeskmultipartposthandler-0.1.0.orig/README.txt0000644000175000017500000000137111402524566020637 0ustar georgeskgeorgeskUsage: Enables the use of multipart/form-data for posting forms Inspirations: Upload files in python: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/146306 urllib2_file: Fabien Seisen: Example: import MultipartPostHandler, urllib2, cookielib cookies = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies), MultipartPostHandler.MultipartPostHandler) params = { "username" : "bob", "password" : "riviera", "file" : open("filename", "rb") } opener.open("http://wwww.bobsite.com/upload/", params) Further Example: The main function of this file is a sample which downloads a page and then uploads it to the W3C validator. multipartposthandler-0.1.0.orig/setup.cfg0000644000175000017500000000007311402536157020757 0ustar georgeskgeorgesk[egg_info] tag_build = tag_date = 0 tag_svn_revision = 0 multipartposthandler-0.1.0.orig/MultipartPostHandler.py0000644000175000017500000001136211402523411023625 0ustar georgeskgeorgesk#!/usr/bin/python #### # 02/2006 Will Holcomb # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # """ Usage: Enables the use of multipart/form-data for posting forms Inspirations: Upload files in python: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/146306 urllib2_file: Fabien Seisen: Example: import MultipartPostHandler, urllib2, cookielib cookies = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies), MultipartPostHandler.MultipartPostHandler) params = { "username" : "bob", "password" : "riviera", "file" : open("filename", "rb") } opener.open("http://wwww.bobsite.com/upload/", params) Further Example: The main function of this file is a sample which downloads a page and then uploads it to the W3C validator. """ import urllib import urllib2 import mimetools, mimetypes import os, stat class Callable: def __init__(self, anycallable): self.__call__ = anycallable # Controls how sequences are uncoded. If true, elements may be given multiple values by # assigning a sequence. doseq = 1 class MultipartPostHandler(urllib2.BaseHandler): handler_order = urllib2.HTTPHandler.handler_order - 10 # needs to run first def http_request(self, request): data = request.get_data() if data is not None and type(data) != str: v_files = [] v_vars = [] try: for(key, value) in data.items(): if type(value) == file: v_files.append((key, value)) else: v_vars.append((key, value)) except TypeError: systype, value, traceback = sys.exc_info() raise TypeError, "not a valid non-string sequence or mapping object", traceback if len(v_files) == 0: data = urllib.urlencode(v_vars, doseq) else: boundary, data = self.multipart_encode(v_vars, v_files) contenttype = 'multipart/form-data; boundary=%s' % boundary if(request.has_header('Content-Type') and request.get_header('Content-Type').find('multipart/form-data') != 0): print "Replacing %s with %s" % (request.get_header('content-type'), 'multipart/form-data') request.add_unredirected_header('Content-Type', contenttype) request.add_data(data) return request def multipart_encode(vars, files, boundary = None, buffer = None): if boundary is None: boundary = mimetools.choose_boundary() if buffer is None: buffer = '' for(key, value) in vars: buffer += '--%s\r\n' % boundary buffer += 'Content-Disposition: form-data; name="%s"' % key buffer += '\r\n\r\n' + value + '\r\n' for(key, fd) in files: file_size = os.fstat(fd.fileno())[stat.ST_SIZE] filename = fd.name.split('/')[-1] contenttype = mimetypes.guess_type(filename)[0] or 'application/octet-stream' buffer += '--%s\r\n' % boundary buffer += 'Content-Disposition: form-data; name="%s"; filename="%s"\r\n' % (key, filename) buffer += 'Content-Type: %s\r\n' % contenttype # buffer += 'Content-Length: %s\r\n' % file_size fd.seek(0) buffer += '\r\n' + fd.read() + '\r\n' buffer += '--%s--\r\n\r\n' % boundary return boundary, buffer multipart_encode = Callable(multipart_encode) https_request = http_request def main(): import tempfile, sys validatorURL = "http://validator.w3.org/check" opener = urllib2.build_opener(MultipartPostHandler) def validateFile(url): temp = tempfile.mkstemp(suffix=".html") os.write(temp[0], opener.open(url).read()) params = { "ss" : "0", # show source "doctype" : "Inline", "uploaded_file" : open(temp[1], "rb") } print opener.open(validatorURL, params).read() os.remove(temp[1]) if len(sys.argv[1:]) > 0: for arg in sys.argv[1:]: validateFile(arg) else: validateFile("http://www.google.com") if __name__=="__main__": main() multipartposthandler-0.1.0.orig/MultipartPostHandler.egg-info/0000755000175000017500000000000011402536157024755 5ustar georgeskgeorgeskmultipartposthandler-0.1.0.orig/MultipartPostHandler.egg-info/SOURCES.txt0000644000175000017500000000035311402536157026642 0ustar georgeskgeorgeskMultipartPostHandler.py README.txt setup.py MultipartPostHandler.egg-info/PKG-INFO MultipartPostHandler.egg-info/SOURCES.txt MultipartPostHandler.egg-info/dependency_links.txt MultipartPostHandler.egg-info/top_level.txt doc/__init__.pymultipartposthandler-0.1.0.orig/MultipartPostHandler.egg-info/dependency_links.txt0000644000175000017500000000000111402536157031023 0ustar georgeskgeorgesk multipartposthandler-0.1.0.orig/MultipartPostHandler.egg-info/top_level.txt0000644000175000017500000000003111402536157027501 0ustar georgeskgeorgeskdoc MultipartPostHandler multipartposthandler-0.1.0.orig/MultipartPostHandler.egg-info/PKG-INFO0000644000175000017500000000326011402536157026053 0ustar georgeskgeorgeskMetadata-Version: 1.0 Name: MultipartPostHandler Version: 0.1.0 Summary: A handler for urllib2 to enable multipart form uploading Home-page: http://pipe.scs.fsu.edu/PostHandler/MultipartPostHandler.py Author: Will Holcomb Author-email: wholcomb@gmail.com License: UNKNOWN Description: Usage: Enables the use of multipart/form-data for posting forms Inspirations: Upload files in python: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/146306 urllib2_file: Fabien Seisen: Example: import MultipartPostHandler, urllib2, cookielib cookies = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies), MultipartPostHandler.MultipartPostHandler) params = { "username" : "bob", "password" : "riviera", "file" : open("filename", "rb") } opener.open("http://wwww.bobsite.com/upload/", params) Further Example: The main function of this file is a sample which downloads a page and then uploads it to the W3C validator. Keywords: http,multipart,post,urllib2 Platform: UNKNOWN Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 Classifier: Development Status :: 4 - Beta Classifier: Environment :: Other Environment Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL) Classifier: Operating System :: OS Independent Classifier: Topic :: Software Development :: Libraries :: Python Modules multipartposthandler-0.1.0.orig/setup.py0000644000175000017500000000335411402535456020656 0ustar georgeskgeorgeskfrom setuptools import setup, find_packages setup( name = "MultipartPostHandler", py_modules = ['MultipartPostHandler'], version = "0.1.0", description = "A handler for urllib2 to enable multipart form uploading", author = "Will Holcomb", author_email = "wholcomb@gmail.com", url = "http://pipe.scs.fsu.edu/PostHandler/MultipartPostHandler.py", keywords = ["http", "multipart", "post", "urllib2"], classifiers = [ "Programming Language :: Python", "Programming Language :: Python :: 2", "Development Status :: 4 - Beta", "Environment :: Other Environment", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)", "Operating System :: OS Independent", "Topic :: Software Development :: Libraries :: Python Modules", ], long_description = """\ Usage: Enables the use of multipart/form-data for posting forms Inspirations: Upload files in python: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/146306 urllib2_file: Fabien Seisen: Example: import MultipartPostHandler, urllib2, cookielib cookies = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies), MultipartPostHandler.MultipartPostHandler) params = { "username" : "bob", "password" : "riviera", "file" : open("filename", "rb") } opener.open("http://wwww.bobsite.com/upload/", params) Further Example: The main function of this file is a sample which downloads a page and then uploads it to the W3C validator. """, package_data = {'doc':['MultipartPostHandler.html']}, packages = find_packages() ) multipartposthandler-0.1.0.orig/PKG-INFO0000644000175000017500000000326011402536157020234 0ustar georgeskgeorgeskMetadata-Version: 1.0 Name: MultipartPostHandler Version: 0.1.0 Summary: A handler for urllib2 to enable multipart form uploading Home-page: http://pipe.scs.fsu.edu/PostHandler/MultipartPostHandler.py Author: Will Holcomb Author-email: wholcomb@gmail.com License: UNKNOWN Description: Usage: Enables the use of multipart/form-data for posting forms Inspirations: Upload files in python: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/146306 urllib2_file: Fabien Seisen: Example: import MultipartPostHandler, urllib2, cookielib cookies = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies), MultipartPostHandler.MultipartPostHandler) params = { "username" : "bob", "password" : "riviera", "file" : open("filename", "rb") } opener.open("http://wwww.bobsite.com/upload/", params) Further Example: The main function of this file is a sample which downloads a page and then uploads it to the W3C validator. Keywords: http,multipart,post,urllib2 Platform: UNKNOWN Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 Classifier: Development Status :: 4 - Beta Classifier: Environment :: Other Environment Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL) Classifier: Operating System :: OS Independent Classifier: Topic :: Software Development :: Libraries :: Python Modules multipartposthandler-0.1.0.orig/doc/0000755000175000017500000000000011402536157017703 5ustar georgeskgeorgeskmultipartposthandler-0.1.0.orig/doc/__init__.py0000644000175000017500000000000011402530067021774 0ustar georgeskgeorgesk