|
|
dc3fb43 |
diff --git a/oauth2/__init__.py b/oauth2/__init__.py
|
|
|
dc3fb43 |
index 835270e..6fd2a15 100644
|
|
|
dc3fb43 |
--- a/oauth2/__init__.py
|
|
|
dc3fb43 |
+++ b/oauth2/__init__.py
|
|
|
dc3fb43 |
@@ -608,7 +608,10 @@ class Request(dict):
|
|
|
dc3fb43 |
"""Turn URL string into parameters."""
|
|
|
dc3fb43 |
parameters = parse_qs(param_str.encode('utf-8'), keep_blank_values=True)
|
|
|
dc3fb43 |
for k, v in parameters.iteritems():
|
|
|
dc3fb43 |
- parameters[k] = urllib.unquote(v[0])
|
|
|
dc3fb43 |
+ if len(v) == 1:
|
|
|
dc3fb43 |
+ parameters[k] = urllib.unquote(v[0])
|
|
|
dc3fb43 |
+ else:
|
|
|
dc3fb43 |
+ parameters[k] = [ urllib.unquote(i) for i in v ]
|
|
|
dc3fb43 |
return parameters
|
|
|
dc3fb43 |
|
|
|
dc3fb43 |
|
|
|
dc3fb43 |
diff --git a/tests/test_oauth.py b/tests/test_oauth.py
|
|
|
dc3fb43 |
index 099e579..d6ab882 100644
|
|
|
dc3fb43 |
--- a/tests/test_oauth.py
|
|
|
dc3fb43 |
+++ b/tests/test_oauth.py
|
|
|
dc3fb43 |
@@ -889,6 +889,13 @@ class TestRequest(unittest.TestCase, ReallyEqualMixin):
|
|
|
dc3fb43 |
req = oauth.Request.from_request("GET", url)
|
|
|
dc3fb43 |
self.assertEquals(None, req)
|
|
|
dc3fb43 |
|
|
|
dc3fb43 |
+ def test_from_request_with_query_string(self):
|
|
|
dc3fb43 |
+ url = "http://sp.example.com/"
|
|
|
dc3fb43 |
+ qs = 'multi=BAR&multi=FOO&multi_same=FOO&multi_same=Foo&oath_consumer_key=0685bd9184jfhq22&oauth_nonce=4572616e48616d6d65724c61686176&oauth_signature_method=HMAC_SHA1&oauth_timestamp=137131200&oauth_token=ad180jjd733klru7&oauth_version=1.0'
|
|
|
dc3fb43 |
+ req = oauth.Request.from_request('GET', url, query_string=qs)
|
|
|
dc3fb43 |
+ res = req.get_normalized_parameters()
|
|
|
dc3fb43 |
+ self.assertEquals(qs, res)
|
|
|
dc3fb43 |
+
|
|
|
dc3fb43 |
def test_from_token_and_callback(self):
|
|
|
dc3fb43 |
url = "http://sp.example.com/"
|
|
|
dc3fb43 |
|