From: verm666 Date: Mon, 29 Aug 2011 16:01:27 +0000 (+0400) Subject: Fixed logic for auto redirect in GET and HEAD methods. X-Git-Tag: v0.6.4^2~5^2~5^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6f84ce72f28a58afa782db585a86aa10632447df;p=services%2Fpython-requests.git Fixed logic for auto redirect in GET and HEAD methods. --- diff --git a/requests/api.py b/requests/api.py index cd522c2..102bc75 100644 --- a/requests/api.py +++ b/requests/api.py @@ -95,6 +95,9 @@ def get(url, **kwargs): :param **kwargs: Optional arguments that ``request`` takes. """ + if "allow_redirects" not in kwargs: + kwargs["allow_redirects"] = True + return request('get', url, **kwargs) @@ -105,6 +108,9 @@ def head(url, **kwargs): :param **kwargs: Optional arguments that ``request`` takes. """ + if "allow_redirects" not in kwargs: + kwargs["allow_redirects"] = True + return request('head', url, **kwargs) diff --git a/requests/models.py b/requests/models.py index 5ff9eb4..a951ab9 100644 --- a/requests/models.py +++ b/requests/models.py @@ -212,8 +212,7 @@ class Request(object): while ( ('location' in r.headers) and - ((self.method in ('GET', 'HEAD')) or - (r.status_code is codes.see_other) or + ((r.status_code is codes.see_other) or (self.allow_redirects)) ): diff --git a/test_requests.py b/test_requests.py index dd92347..e3db01d 100755 --- a/test_requests.py +++ b/test_requests.py @@ -60,6 +60,13 @@ class RequestsTestSuite(unittest.TestCase): r = requests.get(httpbin('/')) self.assertEqual(r.status_code, 200) + def test_HTTP_302_ALLOW_REDIRECT_GET(self): + r = requests.get(httpbin('redirect', '1')) + self.assertEqual(r.status_code, 200) + + def test_HTTP_302_GET(self): + r = requests.get(httpbin('redirect', '1'), allow_redirects=False) + self.assertEqual(r.status_code, 302) def test_HTTPS_200_OK_GET(self): r = requests.get(httpsbin('/'))