]> jfr.im git - z_archive/twitter.git/blobdiff - twitter/oauth.py
Make the code python 2 and 3 compatible.
[z_archive/twitter.git] / twitter / oauth.py
index dcbd8d2e0f4007b90ca9b0f24db8b19d54f664b4..be47e961997986e56cccb9eb73f3dcf7814822a1 100644 (file)
@@ -1,11 +1,19 @@
+from __future__ import print_function
+
 from twitter.auth import Auth
 
 from time import time
 from random import getrandbits
-from time import time
-import urllib.request, urllib.parse, urllib.error
+
+try:
+    import urllib.parse as urllib_parse
+except ImportError:
+    import urllib2 as urllib_parse
+
 import hashlib
 import hmac
+import base64
+
 
 
 def write_token_file(filename, oauth_token, oauth_token_secret):
@@ -54,14 +62,15 @@ class OAuth(Auth):
 
         enc_params = urlencode_noplus(sorted(params.items()))
 
-        key = self.consumer_secret + "&" + urllib.parse.quote(self.token_secret, '')
+        key = self.consumer_secret + "&" + urllib_parse.quote(self.token_secret, '')
 
         message = '&'.join(
-            urllib.parse.quote(i, '') for i in [method.upper(), base_url, enc_params])
+            urllib_parse.quote(i, '') for i in [method.upper(), base_url, enc_params])
 
-        signature = hmac.new(
-            key, message, hashlib.sha1).digest().encode('base64')[:-1]
-        return enc_params + "&" + "oauth_signature=" + urllib.parse.quote(signature, '')
+        signature = (base64.b64encode(hmac.new(
+                    key.encode('ascii'), message.encode('ascii'), hashlib.sha1)
+                                      .digest()))
+        return enc_params + "&" + "oauth_signature=" + urllib_parse.quote(signature, '')
 
     def generate_headers(self):
         return {}
@@ -86,5 +95,5 @@ def urlencode_noplus(query):
             v = v.encode('utf-8')
         else:
             v = str(v)
-        encoded_bits.append("%s=%s" % (urllib.parse.quote(n, ""), urllib.parse.quote(v, "")))
+        encoded_bits.append("%s=%s" % (urllib_parse.quote(n, ""), urllib_parse.quote(v, "")))
     return "&".join(encoded_bits)