File tree Expand file tree Collapse file tree 2 files changed +18
-3
lines changed
Expand file tree Collapse file tree 2 files changed +18
-3
lines changed Original file line number Diff line number Diff line change @@ -470,11 +470,11 @@ def get_normalized_parameters(self):
470470 query = urlparse .urlparse (self .url )[4 ]
471471
472472 url_items = self ._split_url_string (query ).items ()
473- url_items = [(to_utf8 (k ), to_utf8 (v )) for k , v in url_items if k != 'oauth_signature' ]
473+ url_items = [(to_utf8 (k ), to_utf8_optional_iterator (v )) for k , v in url_items if k != 'oauth_signature' ]
474474 items .extend (url_items )
475475
476476 items .sort ()
477- encoded_str = urllib .urlencode (items )
477+ encoded_str = urllib .urlencode (items , True )
478478 # Encode signature parameters per Oauth Core 1.0 protocol
479479 # spec draft 7, section 3.6
480480 # (http://tools.ietf.org/html/draft-hammer-oauth-07#section-3.6)
@@ -608,7 +608,10 @@ def _split_url_string(param_str):
608608 """Turn URL string into parameters."""
609609 parameters = parse_qs (param_str .encode ('utf-8' ), keep_blank_values = True )
610610 for k , v in parameters .iteritems ():
611- parameters [k ] = urllib .unquote (v [0 ])
611+ if len (v ) == 1 :
612+ parameters [k ] = urllib .unquote (v [0 ])
613+ else :
614+ parameters [k ] = sorted ([urllib .unquote (s ) for s in v ])
612615 return parameters
613616
614617
Original file line number Diff line number Diff line change @@ -626,6 +626,18 @@ def test_get_normalized_parameters_duplicate(self):
626626
627627 self .assertEquals (expected , res )
628628
629+ def test_get_normalized_parameters_multiple (self ):
630+ url = "http://example.com/v2/search/videos?oauth_nonce=79815175&oauth_timestamp=1295397962&oauth_consumer_key=mykey&oauth_signature_method=HMAC-SHA1&oauth_version=1.0&offset=10&oauth_signature=spWLI%2FGQjid7sQVd5%2FarahRxzJg%3D&tag=one&tag=two"
631+
632+ req = oauth .Request ("GET" , url )
633+
634+ res = req .get_normalized_parameters ()
635+
636+ expected = 'oauth_consumer_key=mykey&oauth_nonce=79815175&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1295397962&oauth_version=1.0&offset=10&tag=one&tag=two'
637+
638+ self .assertEquals (expected , res )
639+
640+
629641 def test_get_normalized_parameters_from_url (self ):
630642 # example copied from
631643 # https://github.com/ciaranj/node-oauth/blob/master/tests/oauth.js
You can’t perform that action at this time.
0 commit comments