@@ -349,7 +349,7 @@ def __init__(self, method=HTTP_METHOD, url=None, parameters=None,
349
349
k = to_unicode (k )
350
350
v = to_unicode_optional_iterator (v )
351
351
self [k ] = v
352
- self .body = body
352
+ self .body = body . encode ( 'UTF-8' )
353
353
self .is_form_encoded = is_form_encoded
354
354
355
355
@@ -481,10 +481,10 @@ def get_normalized_parameters(self):
481
481
# Spaces must be encoded with "%20" instead of "+"
482
482
return encoded_str .replace ('+' , '%20' ).replace ('%7E' , '~' )
483
483
484
- def sign_request (self , signature_method , consumer , token ):
484
+ def sign_request (self , signature_method , consumer , token , include_body_hash = True ):
485
485
"""Set the signature parameter to the result of sign."""
486
486
487
- if not self .is_form_encoded :
487
+ if not self .is_form_encoded and include_body_hash :
488
488
# according to
489
489
# http://oauth.googlecode.com/svn/spec/ext/body_hash/1.0/oauth-bodyhash.html
490
490
# section 4.1.1 "OAuth Consumers MUST NOT include an
@@ -637,7 +637,7 @@ def set_signature_method(self, method):
637
637
self .method = method
638
638
639
639
def request (self , uri , method = "GET" , body = '' , headers = None ,
640
- redirections = httplib2 .DEFAULT_MAX_REDIRECTS , connection_type = None ):
640
+ redirections = httplib2 .DEFAULT_MAX_REDIRECTS , connection_type = None , include_body_hash = True ):
641
641
DEFAULT_POST_CONTENT_TYPE = 'application/x-www-form-urlencoded'
642
642
643
643
if not isinstance (headers , dict ):
@@ -659,7 +659,7 @@ def request(self, uri, method="GET", body='', headers=None,
659
659
token = self .token , http_method = method , http_url = uri ,
660
660
parameters = parameters , body = body , is_form_encoded = is_form_encoded )
661
661
662
- req .sign_request (self .method , self .consumer , self .token )
662
+ req .sign_request (self .method , self .consumer , self .token , include_body_hash )
663
663
664
664
schema , rest = urllib .parse .splittype (uri )
665
665
if rest .startswith ('//' ):
@@ -837,10 +837,10 @@ def sign(self, request, consumer, token):
837
837
"""Builds the base signature string."""
838
838
key , raw = self .signing_base (request , consumer , token )
839
839
840
- hashed = hmac .new (key , raw , sha )
840
+ hashed = hmac .new (key . encode ( 'UTF-8' ) , raw . encode ( 'UTF-8' ) , sha )
841
841
842
842
# Calculate the digest base 64.
843
- return binascii .b2a_base64 (hashed .digest ())[:- 1 ]
843
+ return binascii .b2a_base64 (hashed .digest ())[:- 1 ]. decode ( 'UTF-8' )
844
844
845
845
846
846
class SignatureMethod_PLAINTEXT (SignatureMethod ):
0 commit comments