From 8a42d5fb41cbca27f64ced4b8f087fb1001fac23 Mon Sep 17 00:00:00 2001 From: Cory Benfield Date: Fri, 18 Oct 2013 18:34:29 +0100 Subject: [PATCH] Use builtin_str for all auto-set header values. --- requests/models.py | 6 +++--- test_requests.py | 8 ++++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/requests/models.py b/requests/models.py index ee2ca9e..c3c9a10 100644 --- a/requests/models.py +++ b/requests/models.py @@ -407,7 +407,7 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): raise NotImplementedError('Streamed bodies and files are mutually exclusive.') if length is not None: - self.headers['Content-Length'] = str(length) + self.headers['Content-Length'] = builtin_str(length) else: self.headers['Transfer-Encoding'] = 'chunked' else: @@ -433,12 +433,12 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): def prepare_content_length(self, body): if hasattr(body, 'seek') and hasattr(body, 'tell'): body.seek(0, 2) - self.headers['Content-Length'] = str(body.tell()) + self.headers['Content-Length'] = builtin_str(body.tell()) body.seek(0, 0) elif body is not None: l = super_len(body) if l: - self.headers['Content-Length'] = str(l) + self.headers['Content-Length'] = builtin_str(l) elif self.method not in ('GET', 'HEAD'): self.headers['Content-Length'] = '0' diff --git a/test_requests.py b/test_requests.py index 18fb10e..5726027 100755 --- a/test_requests.py +++ b/test_requests.py @@ -684,6 +684,14 @@ class RequestsTestCase(unittest.TestCase): self.assertTrue('multipart/form-data' in p.headers['Content-Type']) + def test_autoset_header_values_are_native(self): + data = 'this is a string' + length = '16' + req = requests.Request('POST', httpbin('post'), data=data) + p = req.prepare() + + self.assertEqual(p.headers['Content-Length'], length) + class TestContentEncodingDetection(unittest.TestCase): -- 2.34.1