From 10280c697dcfd3d334f1c9c381a11c324bb550bc Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Mon, 14 Feb 2011 11:31:06 -0500 Subject: [PATCH] Handles request in event of HTTPError. Fixes Issue #2 Building of internal request object refactor --- requests/core.py | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/requests/core.py b/requests/core.py index c99de57..d10b818 100644 --- a/requests/core.py +++ b/requests/core.py @@ -99,9 +99,17 @@ class Request(object): else: return urllib2.urlopen - + + def _build_response(self, resp): + """Build internal Response object from given response.""" + + self.response.status_code = resp.code + self.response.headers = resp.info().dict + self.response.content = resp.read() + self.response.url = resp.url + def send(self, anyway=False): - """Sends the request. Returns True of successfull, false if not. + """Sends the request. Returns True of successful, false if not. If there was an HTTPError during transmission, self.response.status_code will contain the HTTPError code. @@ -135,15 +143,12 @@ class Request(object): try: resp = opener(req) - self.response.status_code = resp.code - self.response.headers = resp.info().dict - if self.method == 'GET': - self.response.content = resp.read() - self.response.url = resp.url - + self._build_response(resp) success = True + except urllib2.HTTPError as why: - self.response.status_code = why.code + self._build_response(why) + success = False elif self.method == 'PUT': @@ -170,15 +175,12 @@ class Request(object): opener = self._get_opener() resp = opener(req) - self.response.status_code = resp.code - self.response.headers = resp.info().dict - self.response.content = resp.read() - self.response.url = resp.url - + self._build_response(resp) success = True except urllib2.HTTPError as why: - self.response.status_code = why.code + self._build_response(why) + success = False elif self.method == 'POST': @@ -207,15 +209,12 @@ class Request(object): opener = self._get_opener() resp = opener(req) - self.response.status_code = resp.code - self.response.headers = resp.info().dict - self.response.content = resp.read() - self.response.url = resp.url - + self._build_response(resp) success = True except urllib2.HTTPError as why: - self.response.status_code = why.code + sself._build_response(why) + success = False self.sent = True if success else False -- 2.7.4