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):
470
470
query = urlparse .urlparse (self .url )[4 ]
471
471
472
472
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' ]
474
474
items .extend (url_items )
475
475
476
476
items .sort ()
477
- encoded_str = urllib .urlencode (items )
477
+ encoded_str = urllib .urlencode (items , True )
478
478
# Encode signature parameters per Oauth Core 1.0 protocol
479
479
# spec draft 7, section 3.6
480
480
# (http://tools.ietf.org/html/draft-hammer-oauth-07#section-3.6)
@@ -608,7 +608,10 @@ def _split_url_string(param_str):
608
608
"""Turn URL string into parameters."""
609
609
parameters = parse_qs (param_str .encode ('utf-8' ), keep_blank_values = True )
610
610
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 ])
612
615
return parameters
613
616
614
617
Original file line number Diff line number Diff line change @@ -626,6 +626,18 @@ def test_get_normalized_parameters_duplicate(self):
626
626
627
627
self .assertEquals (expected , res )
628
628
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
+
629
641
def test_get_normalized_parameters_from_url (self ):
630
642
# example copied from
631
643
# https://github.com/ciaranj/node-oauth/blob/master/tests/oauth.js
You can’t perform that action at this time.
0 commit comments