From 628e393b9a251c3d2b9910c697b9e4ac4f3d8d6a Mon Sep 17 00:00:00 2001 From: Matt McClure Date: Fri, 11 Jan 2013 15:04:47 -0500 Subject: [PATCH] Resolves the parts of #1096 in requests proper. --- requests/models.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/requests/models.py b/requests/models.py index 5202e6f..b7d52cd 100644 --- a/requests/models.py +++ b/requests/models.py @@ -375,13 +375,7 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): else: content_type = 'application/x-www-form-urlencoded' - self.headers['Content-Length'] = '0' - if hasattr(body, 'seek') and hasattr(body, 'tell'): - body.seek(0, 2) - self.headers['Content-Length'] = str(body.tell()) - body.seek(0, 0) - elif body is not None: - self.headers['Content-Length'] = str(len(body)) + self.prepare_content_length(body) # Add content-type if it wasn't explicitly provided. if (content_type) and (not 'content-type' in self.headers): @@ -389,6 +383,15 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): self.body = body + def prepare_content_length(self, body): + self.headers['Content-Length'] = '0' + if hasattr(body, 'seek') and hasattr(body, 'tell'): + body.seek(0, 2) + self.headers['Content-Length'] = str(body.tell()) + body.seek(0, 0) + elif body is not None: + self.headers['Content-Length'] = str(len(body)) + def prepare_auth(self, auth): """Prepares the given HTTP auth data.""" if auth: @@ -402,6 +405,9 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): # Update self to reflect the auth changes. self.__dict__.update(r.__dict__) + # Recompute Content-Length + self.prepare_content_length(self.body) + def prepare_cookies(self, cookies): """Prepares the given HTTP cookie data.""" -- 2.7.4