home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 February / maximum-cd-2011-02.iso / DiscContents / digsby_setup85.exe / lib / plugins / twitter / twitter_xauth.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-11-24  |  6.2 KB  |  142 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. from urllib2 import Request, urlopen
  5. import oauth.oauth as oauth
  6. from util import threaded, callsback
  7. from datetime import datetime
  8. import time
  9. CONSUMER_KEY = 'cBr7RsK3ljQT3nPNzuxQfA'
  10. CONSUMER_SECRET = '73wB2AKjAFNqknP8tBVKzCY4TMnOal7dQYAD8cICo'
  11.  
  12. def get_oauth_token(username, password, callback = None):
  13.     auth = OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
  14.     
  15.     def on_thread():
  16.         return auth.get_xauth_access_token(username, password)
  17.  
  18.     on_thread = (None, None, threaded)(on_thread)
  19.     on_thread(callback = callback)
  20.  
  21. get_oauth_token = callsback(get_oauth_token)
  22.  
  23. class AuthHandler(object):
  24.     
  25.     def apply_auth(self, url, method, headers, parameters):
  26.         raise NotImplementedError
  27.  
  28.     
  29.     def get_username(self):
  30.         raise NotImplementedError
  31.  
  32.  
  33.  
  34. class OAuthHandler(AuthHandler):
  35.     OAUTH_HOST = 'twitter.com'
  36.     OAUTH_ROOT = '/oauth/'
  37.     
  38.     def __init__(self, consumer_key, consumer_secret, callback = None, secure = False):
  39.         self._consumer = oauth.OAuthConsumer(consumer_key, consumer_secret)
  40.         self._sigmethod = oauth.OAuthSignatureMethod_HMAC_SHA1()
  41.         self.request_token = None
  42.         self.access_token = None
  43.         self.callback = callback
  44.         self.username = None
  45.         self.secure = secure
  46.  
  47.     
  48.     def _get_oauth_url(self, endpoint, secure = False):
  49.         if self.secure or secure:
  50.             prefix = 'https://'
  51.         else:
  52.             prefix = 'http://'
  53.         return prefix + self.OAUTH_HOST + self.OAUTH_ROOT + endpoint
  54.  
  55.     
  56.     def apply_auth(self, url, method, headers, parameters):
  57.         request = oauth.OAuthRequest.from_consumer_and_token(self._consumer, http_url = url, http_method = method, token = self.access_token, parameters = parameters)
  58.         request.sign_request(self._sigmethod, self._consumer, self.access_token)
  59.         headers.update(request.to_header())
  60.  
  61.     
  62.     def _get_request_token(self):
  63.         url = self._get_oauth_url('request_token')
  64.         request = oauth.OAuthRequest.from_consumer_and_token(self._consumer, http_url = url, callback = self.callback)
  65.         request.sign_request(self._sigmethod, self._consumer, None)
  66.         resp = urlopen(Request(url, headers = request.to_header()))
  67.         return oauth.OAuthToken.from_string(resp.read())
  68.  
  69.     
  70.     def set_request_token(self, key, secret):
  71.         self.request_token = oauth.OAuthToken(key, secret)
  72.  
  73.     
  74.     def set_access_token(self, key, secret):
  75.         self.access_token = oauth.OAuthToken(key, secret)
  76.  
  77.     
  78.     def get_authorization_url(self, signin_with_twitter = False):
  79.         self.request_token = self._get_request_token()
  80.         if signin_with_twitter:
  81.             url = self._get_oauth_url('authenticate')
  82.         else:
  83.             url = self._get_oauth_url('authorize')
  84.         request = oauth.OAuthRequest.from_token_and_callback(token = self.request_token, http_url = url)
  85.         return request.to_url()
  86.  
  87.     
  88.     def get_access_token(self, verifier = None):
  89.         url = self._get_oauth_url('access_token')
  90.         request = oauth.OAuthRequest.from_consumer_and_token(self._consumer, token = self.request_token, http_url = url, verifier = str(verifier))
  91.         request.sign_request(self._sigmethod, self._consumer, self.request_token)
  92.         resp = urlopen(Request(url, headers = request.to_header()))
  93.         self.access_token = oauth.OAuthToken.from_string(resp.read())
  94.         return self.access_token
  95.  
  96.     
  97.     def get_xauth_access_token(self, username, password):
  98.         url = self._get_oauth_url('access_token', secure = True)
  99.         request = oauth.OAuthRequest.from_consumer_and_token(oauth_consumer = self._consumer, http_method = 'POST', http_url = url, parameters = {
  100.             'x_auth_mode': 'client_auth',
  101.             'x_auth_username': to_utf8(username),
  102.             'x_auth_password': to_utf8(password),
  103.             'oauth_timestamp': generate_corrected_timestamp() })
  104.         request.sign_request(self._sigmethod, self._consumer, None)
  105.         resp = urlopen(Request(url, data = request.to_postdata()))
  106.         self.access_token = oauth.OAuthToken.from_string(resp.read())
  107.         return self.access_token
  108.  
  109.     
  110.     def get_username(self):
  111.         return self.username
  112.  
  113.  
  114.  
  115. def to_utf8(s):
  116.     if isinstance(s, unicode):
  117.         return s.encode('utf-8')
  118.     return s
  119.  
  120. _time_correction = None
  121.  
  122. def get_time_correction():
  123.     return _time_correction
  124.  
  125.  
  126. def set_server_timestamp(server_time_now):
  127.     global _time_correction
  128.     _time_correction = server_time_now - time.time()
  129.  
  130.  
  131. def generate_corrected_timestamp():
  132.     import logging
  133.     now = time.time()
  134.     if _time_correction is not None:
  135.         t = now + _time_correction
  136.         logging.getLogger('twitter').warn('using corrected timestamp: %r', datetime.fromtimestamp(t).isoformat())
  137.     else:
  138.         t = now
  139.         logging.getLogger('twitter').warn('using UNcorrected timestamp: %r', datetime.fromtimestamp(t).isoformat())
  140.     return t
  141.  
  142.