From: Daniel Miller Date: Wed, 5 Oct 2011 18:36:12 +0000 (-0400) Subject: Make get and head requests respect allow_redirects=False. X-Git-Tag: v0.6.2~1^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=aa04cc9b427432358398aac713c2574193ecc691;p=services%2Fpython-requests.git Make get and head requests respect allow_redirects=False. --- diff --git a/requests/api.py b/requests/api.py index 0cea63d..e22ba42 100644 --- a/requests/api.py +++ b/requests/api.py @@ -90,9 +90,11 @@ def get(url, **kwargs): :param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`. :param auth: (optional) AuthObject to enable Basic HTTP Auth. :param timeout: (optional) Float describing the timeout of the request. + :param allow_redirects: (optional) Boolean. Set to False to disable redirect following. :param proxies: (optional) Dictionary mapping protocol to the URL of the proxy. """ + kwargs.setdefault('allow_redirects', True) return request('GET', url, **kwargs) @@ -106,9 +108,11 @@ def head(url, **kwargs): :param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`. :param auth: (optional) AuthObject to enable Basic HTTP Auth. :param timeout: (optional) Float describing the timeout of the request. + :param allow_redirects: (optional) Boolean. Set to False to disable redirect following. :param proxies: (optional) Dictionary mapping protocol to the URL of the proxy. """ + kwargs.setdefault('allow_redirects', True) return request('HEAD', url, **kwargs) diff --git a/requests/models.py b/requests/models.py index 2d7fc8f..b3a60c2 100644 --- a/requests/models.py +++ b/requests/models.py @@ -203,9 +203,7 @@ class Request(object): while ( ('location' in r.headers) and - ((self.method in ('GET', 'HEAD')) or - (r.status_code is codes.see_other) or - (self.allow_redirects)) + ((r.status_code is codes.see_other) or (self.allow_redirects)) ): r.close() diff --git a/test_requests.py b/test_requests.py index dd92347..94c144f 100755 --- a/test_requests.py +++ b/test_requests.py @@ -422,6 +422,24 @@ class RequestsTestSuite(unittest.TestCase): self.assertEquals(rbody.get('data'), '') + def test_GET_no_redirect(self): + + for service in SERVICES: + + r = requests.get(service('redirect', '3'), allow_redirects=False) + self.assertEquals(r.status_code, 302) + self.assertEquals(len(r.history), 0) + + + def test_HEAD_no_redirect(self): + + for service in SERVICES: + + r = requests.head(service('redirect', '3'), allow_redirects=False) + self.assertEquals(r.status_code, 302) + self.assertEquals(len(r.history), 0) + + def test_redirect_history(self): for service in SERVICES: