From: Cory Benfield Date: Sat, 19 Jan 2013 12:07:34 +0000 (+0000) Subject: Ensure Content-Length is a string. X-Git-Tag: v1.2.0~74^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=89c8cbbe0c8e1db50746ca0f5e68c754ec2d50b2;p=services%2Fpython-requests.git Ensure Content-Length is a string. --- diff --git a/requests/models.py b/requests/models.py index 5202e6f..68ee442 100644 --- a/requests/models.py +++ b/requests/models.py @@ -121,7 +121,7 @@ class RequestEncodingMixin(object): fp = StringIO(fp) if isinstance(fp, bytes): fp = BytesIO(fp) - + if ft: new_v = (fn, fp.read(), ft) else: @@ -346,7 +346,7 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): ]) try: - length = super_len(data) + length = str(super_len(data)) except (TypeError, AttributeError): length = False diff --git a/test_requests.py b/test_requests.py index 4a70982..3562318 100644 --- a/test_requests.py +++ b/test_requests.py @@ -9,6 +9,12 @@ import unittest import requests from requests.auth import HTTPDigestAuth +from requests.compat import str + +try: + import StringIO +except ImportError: + import io as StringIO HTTPBIN = os.environ.get('HTTPBIN_URL', 'http://httpbin.org/') @@ -131,8 +137,6 @@ class RequestsTestCase(unittest.TestCase): self.assertEqual(r.status_code, 200) def test_BASICAUTH_TUPLE_HTTP_200_OK_GET(self): - - auth = ('user', 'pass') url = httpbin('basic-auth', 'user', 'pass') @@ -264,6 +268,11 @@ class RequestsTestCase(unittest.TestCase): self.assertEqual(r.status_code, 200) self.assertTrue(b"text/py-content-type" in r.request.body) + def test_content_length_is_string_for_file_objects(self): + r = requests.Request(url='http://httpbin.org/post', + data=StringIO.StringIO('abc')).prepare() + self.assertTrue(type(r.headers['Content-Length']) == str) + if __name__ == '__main__': unittest.main()