From: Matthias Rahlf Date: Mon, 9 Jul 2012 23:06:02 +0000 (+0200) Subject: fixed param handling in Request.full_url X-Git-Tag: v0.13.3~2^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=08cebb3c2fb3b3a4164a8e38435ab30b2ddaaa73;p=services%2Fpython-requests.git fixed param handling in Request.full_url --- diff --git a/AUTHORS.rst b/AUTHORS.rst index dc73b64..915826a 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -105,3 +105,4 @@ Patches and Suggestions - Danilo Bargen (gwrtheyrn) - Torsten Landschoff - Michael Holler (apotheos) +- Matthias Rahlf diff --git a/requests/models.py b/requests/models.py index 694d62a..f799581 100644 --- a/requests/models.py +++ b/requests/models.py @@ -395,14 +395,14 @@ class Request(object): if isinstance(fragment, str): fragment = fragment.encode('utf-8') - url = (urlunparse([scheme, netloc, path, params, query, fragment])) - enc_params = self._encode_params(self.params) if enc_params: - if urlparse(url).query: - url = '%s&%s' % (url, enc_params) + if query: + query = '%s&%s' % (query, enc_params) else: - url = '%s?%s' % (url, enc_params) + query = enc_params + + url = (urlunparse([scheme, netloc, path, params, query, fragment])) if self.config.get('encode_uri', True): url = requote_uri(url) diff --git a/tests/test_requests.py b/tests/test_requests.py index d9a820d..35632bd 100755 --- a/tests/test_requests.py +++ b/tests/test_requests.py @@ -83,6 +83,16 @@ class RequestsTestSuite(TestSetup, TestBaseMixin, unittest.TestCase): self.assertEqual(request.path_url, "/get/test%20case") + def test_params_are_added_before_fragment(self): + request = requests.Request( + "http://example.com/path#fragment", params={"a": "b"}) + self.assertEqual(request.full_url, + "http://example.com/path?a=b#fragment") + request = requests.Request( + "http://example.com/path?key=value#fragment", params={"a": "b"}) + self.assertEqual(request.full_url, + "http://example.com/path?key=value&a=b#fragment") + def test_HTTP_200_OK_GET(self): r = get(httpbin('get')) self.assertEqual(r.status_code, 200)