Add ability to pass response to HTTPError()

Just a little refactoring, but it seems nicer to me to be able to pass
the response when constructing the `HTTPError` instance instead of
constructing it and then changing the member variable.
This commit is contained in:
Dmitry Medvinsky
2013-03-01 12:43:39 +04:00
parent d372a5b10b
commit c4f9340fb4
4 changed files with 18 additions and 5 deletions
+1
View File
@@ -122,3 +122,4 @@ Patches and Suggestions
- Johnny Goodnow <j.goodnow29@gmail.com>
- Denis Ryzhkov <denisr@denisr.com>
- Wilfred Hughes <me@wilfred.me.uk> @dontYetKnow
- Dmitry Medvinsky <me@dmedvinsky.name>
+5 -1
View File
@@ -16,7 +16,11 @@ class RequestException(RuntimeError):
class HTTPError(RequestException):
"""An HTTP error occurred."""
response = None
def __init__(self, *args, **kwargs):
""" Initializes HTTPError with optional `response` object. """
self.response = kwargs.pop('response', None)
super(HTTPError, self).__init__(*args, **kwargs)
class ConnectionError(RequestException):
+1 -3
View File
@@ -657,9 +657,7 @@ class Response(object):
http_error_msg = '%s Server Error: %s' % (self.status_code, self.reason)
if http_error_msg:
http_error = HTTPError(http_error_msg)
http_error.response = self
raise http_error
raise HTTPError(http_error_msg, response=self)
def close(self):
return self.raw.release_conn()
+11 -1
View File
@@ -385,7 +385,17 @@ class RequestsTestCase(unittest.TestCase):
# undo monkey patch
HTTPConnectionPool.urlopen = old_urlopen
def test_http_error(self):
error = requests.exceptions.HTTPError()
self.assertEqual(error.response, None)
response = requests.Response()
error = requests.exceptions.HTTPError(response=response)
self.assertEqual(error.response, response)
error = requests.exceptions.HTTPError('message', response=response)
self.assertEqual(str(error), 'message')
self.assertEqual(error.response, response)
if __name__ == '__main__':
unittest.main()