]> jfr.im git - z_archive/twitter.git/blobdiff - twitter/oauth.py
make cmd client understand any language
[z_archive/twitter.git] / twitter / oauth.py
index bf81f42807e4d28eff667d5112083a58351e3d72..ed15492ac576a9a0b3529f9db8070175b72203a3 100644 (file)
@@ -8,9 +8,33 @@ import hashlib
 import hmac
 
 
-# An OAuth implementation with various helpers...
+def write_token_file(filename, oauth_token, oauth_token_secret):
+    """
+    Write a token file to hold the oauth token and oauth token secret.
+    """
+    oauth_file = open(filename, 'w')
+    print >> oauth_file, oauth_token
+    print >> oauth_file, oauth_token_secret
+    oauth_file.close()
+
+def read_token_file(filename):
+    """
+    Read a token file and return the oauth token and oauth token secret.
+    """
+    f = open(filename)
+    return f.readline().strip(), f.readline().strip()
+
+
 class OAuth(Auth):
+    """
+    An OAuth authenticator.
+    """
     def __init__(self, token, token_secret, consumer_key, consumer_secret):
+        """
+        Create the authenticator. If you are in the initial stages of
+        the OAuth dance and don't yet have a token or token_secret,
+        pass empty strings for these params.
+        """
         self.token = token
         self.token_secret = token_secret
         self.consumer_key = consumer_key
@@ -19,7 +43,9 @@ class OAuth(Auth):
     def encode_params(self, base_url, method, params):
         params = params.copy()
 
-        params['oauth_token'] = self.token
+        if self.token:
+            params['oauth_token'] = self.token
+
         params['oauth_consumer_key'] = self.consumer_key
         params['oauth_signature_method'] = 'HMAC-SHA1'
         params['oauth_version'] = '1.0'
@@ -32,7 +58,7 @@ class OAuth(Auth):
 
         message = '&'.join(
             urllib.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.quote(signature, '')
@@ -48,7 +74,7 @@ def urlencode_noplus(query):
     if hasattr(query,"items"):
         # mapping objects
         query = query.items()
-    
+
     encoded_bits = []
     for n, v in query:
         # and do unicode here while we are at it...