comparison tests/multipart.py @ 64:bb8d993376aa

* convenience methods for multipart form * include this in test globals
author Jeff Hammel <jhammel@mozilla.com>
date Thu, 01 Mar 2012 18:15:34 -0800
parents af1476a936fc
children
comparison
equal deleted inserted replaced
63:af1476a936fc 64:bb8d993376aa
6 """ 6 """
7 7
8 import itertools 8 import itertools
9 import mimetools 9 import mimetools
10 import mimetypes 10 import mimetypes
11 from cStringIO import StringIO 11 import os
12 import urllib 12 import urllib
13 import urllib2 13 import urllib2
14 from cStringIO import StringIO
14 15
15 class MultiPartForm(object): 16 class MultiPartForm(object):
16 """Accumulate the data to be used when posting a form.""" 17 """Accumulate the data to be used when posting a form."""
17 18
18 def __init__(self): 19 def __init__(self):
25 26
26 def add_field(self, name, value): 27 def add_field(self, name, value):
27 """Add a simple field to the form data.""" 28 """Add a simple field to the form data."""
28 self.form_fields.append((name, value)) 29 self.form_fields.append((name, value))
29 30
30 def add_file(self, fieldname, filename, fileHandle, mimetype=None): 31 def add_file(self, fieldname, path, mimetype=None):
31 """Add a file to be uploaded.""" 32 filename = os.path.basename(path)
33 f = file(path)
34 self.add_file_obj(fieldname, filename, f, mimetype)
35 f.close()
36
37 def add_file_obj(self, fieldname, filename, fileHandle, mimetype=None):
38 """Add a file object to be uploaded."""
32 body = fileHandle.read() 39 body = fileHandle.read()
33 if mimetype is None: 40 if mimetype is None:
34 mimetype = mimetypes.guess_type(filename)[0] or 'application/octet-stream' 41 mimetype = mimetypes.guess_type(filename)[0] or 'application/octet-stream'
35 self.files.append((fieldname, filename, mimetype, body)) 42 self.files.append((fieldname, filename, mimetype, body))
36 43