Allow for third argument in file dict value to support explicit

file content type.
This commit is contained in:
Vinod Chandru
2013-01-09 19:29:28 -08:00
parent b4505284f2
commit 20b10aed1b
3 changed files with 20 additions and 2 deletions
+1
View File
@@ -118,3 +118,4 @@ Patches and Suggestions
- Martijn Pieters
- Jonatan Heyman
- David Bonner <dbonner@gmail.com> @rascalking
- Vinod Chandru
+11 -2
View File
@@ -108,8 +108,12 @@ class RequestEncodingMixin(object):
for (k, v) in files:
# support for explicit filename
ft = None
if isinstance(v, (tuple, list)):
fn, fp = v
if len(v) == 2:
fn, fp = v
else:
fn, fp, ft = v
else:
fn = guess_filename(v) or k
fp = v
@@ -117,7 +121,12 @@ class RequestEncodingMixin(object):
fp = StringIO(fp)
if isinstance(fp, bytes):
fp = BytesIO(fp)
new_fields.append((k, (fn, fp.read())))
if ft:
new_v = (fn, fp.read(), ft)
else:
new_v = (fn, fp.read())
new_fields.append((k, new_v))
body, content_type = encode_multipart_formdata(new_fields)
+8
View File
@@ -255,6 +255,14 @@ class RequestsTestCase(unittest.TestCase):
files={'file': ('test_requests.py', open(__file__, 'rb'))})
self.assertEqual(r.status_code, 200)
def test_custom_content_type(self):
r = requests.post(httpbin('post'),
data={'stuff': json.dumps({'a': 123})},
files={'file1': ('test_requests.py', open(__file__, 'rb')),
'file2': ('test_requests', open(__file__, 'rb'),
'text/py-content-type')})
self.assertEqual(r.status_code, 200)
self.assertTrue("text/py-content-type" in r.request.body)
if __name__ == '__main__':