home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2012 January / maximum-cd-2012-01.iso / DiscContents / digsby_setup.exe / lib / oscar / api.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2011-10-05  |  2.2 KB  |  47 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. from util.net import WebFormData, wget
  5. from util.primitives.mapping import LazySortedDict
  6. import hashlib
  7. import hmac
  8. import simplejson
  9. import urllib
  10. import pprint
  11. from common import asynchttp
  12. ICQ_API_KEY = 'gu19PNBblQjCdbMU'
  13. ICQ_API = 'icq.com'
  14. AIM_API = 'aol.com'
  15.  
  16. def hmac_sha256_base64(secret, password):
  17.     return hmac.new(password, secret, digestmod = hashlib.sha256).digest().encode('b64')
  18.  
  19.  
  20. def get_login_data(login, password, api = 'icq.com', callback = None):
  21.     if callback is None:
  22.         return simplejson.loads(wget('https://api.screenname.%s/auth/clientLogin?f=json' % api, dict(k = ICQ_API_KEY, s = login, pwd = password)))
  23.     return asynchttp.httpopen('https://api.screenname.%s/auth/clientLogin?f=json' % api, data = dict(k = ICQ_API_KEY, s = login, pwd = password), callback = callback)
  24.  
  25.  
  26. def get_login_cookie(login, password, api = 'icq.net', api2 = None):
  27.     if api2 is None:
  28.         api2 = api
  29.     
  30.     r = get_login_data(login, password, api2)
  31.     sessionSecret = r['response']['data']['sessionSecret']
  32.     token = r['response']['data']['token']['a']
  33.     sessionKey = hmac_sha256_base64(sessionSecret, password)
  34.     uri = 'https://api.oscar.%s/aim/startOSCARSession' % api
  35.     d = dict(a = token, f = 'json', k = ICQ_API_KEY, ts = r['response']['data']['hostTime'], useTLS = 1)
  36.     queryString = WebFormData(d = LazySortedDict(d)).replace('+', '%20')
  37.     hashData = 'GET&' + urllib.quote(uri, safe = '') + '&' + queryString.encode('url')
  38.     digest = hmac_sha256_base64(hashData, sessionKey)
  39.     url = uri + '?' + queryString + '&sig_sha256=' + digest
  40.     ret = simplejson.loads(wget(url))
  41.     return ret
  42.  
  43. if __name__ == '__main__':
  44.     ret = get_login_cookie('digsby01', '%%%', AIM_API)
  45.     pprint.pprint(ret)
  46.  
  47.