Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a532ed9

Browse files
Guillaume DuhamelAnthony Awtrey
authored andcommitted
Modified _split_url_string to handle multiple instances of the same parameter. This is useful for APIs such as the LinkedIn search API using multiple instances of the "facet" parameter. Also updated get_normalized_parameters to handle the new datatype returned by _split_url_string (list of tuples instead of dict). It doesn't break from_request but it doesn't make it possible to use multiple instance of the sameparameters in from_request. (as they are stored in a dict in that function)
1 parent 71dc57b commit a532ed9

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

oauth2/__init__.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,7 @@ def get_normalized_parameters(self):
469469
# Include any query string parameters from the provided URL
470470
query = urlparse.urlparse(self.url)[4]
471471

472-
url_items = self._split_url_string(query).items()
472+
url_items = self._split_url_string(query)
473473
url_items = [(to_utf8(k), to_utf8(v)) for k, v in url_items if k != 'oauth_signature' ]
474474
items.extend(url_items)
475475

@@ -606,9 +606,11 @@ def _split_header(header):
606606
@staticmethod
607607
def _split_url_string(param_str):
608608
"""Turn URL string into parameters."""
609-
parameters = parse_qs(param_str.encode('utf-8'), keep_blank_values=True)
610-
for k, v in parameters.iteritems():
611-
parameters[k] = urllib.unquote(v[0])
609+
parsed = parse_qs(param_str.encode('utf-8'), keep_blank_values=True)
610+
parameters = []
611+
for k, v in parsed.iteritems():
612+
for w in v:
613+
parameters.append((k, urllib.unquote(w)))
612614
return parameters
613615

614616

0 commit comments

Comments
 (0)