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

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. from logging import getLogger
  5. from traceback import print_exc
  6. from util.callbacks import callsback
  7. from util.xml_tag import tag, post_xml
  8. import urllib2
  9. import httplib
  10. log = getLogger('yahoohttp')
  11.  
  12. def y_webrequest(url, data, cookies):
  13.     headers = {
  14.         'Cookie': cookies['Y'] + '; ' + cookies['T'],
  15.         'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5)',
  16.         'Cache-Control': 'no-cache' }
  17.     req = urllib2.Request(url, data, headers)
  18.     response = urllib2.urlopen(req)
  19.     return response.read()
  20.  
  21. _carriers = { }
  22.  
  23. def get_carrier(yahoo, sms_number, callback = None):
  24.     if sms_number in _carriers:
  25.         return callback.success(_carriers[sms_number])
  26.     version = '8.1.0.209'
  27.     intl = 'us'
  28.     validate = tag('validate', intl = intl, version = version, qos = '0')
  29.     validate.mobile_no['msisdn'] = sms_number
  30.     validate._cdata = '\n'
  31.     
  32.     def on_response(validate):
  33.         log.info('HTTP response to get_carrier:\n%s', validate._to_xml())
  34.         status = unicode(validate.mobile_no.status)
  35.         log.info('<status> tag contents: %s', status)
  36.         if status == 'Valid':
  37.             carrier = str(validate.mobile_no.carrier)
  38.             _carriers[sms_number] = carrier
  39.             log.info('carrier for %s: %s', sms_number, carrier)
  40.             return callback.success(carrier)
  41.         if status == 'Unknown':
  42.             log.critical('unknown carrier for %s', sms_number)
  43.             return callback.error()
  44.         log.critical('unknown XML returned from mobile carrier lookup service')
  45.         return callback.error()
  46.  
  47.     
  48.     def on_error(validate):
  49.         log.critical('could not connect to mobile carrier lookup web service')
  50.         return callback.error()
  51.  
  52.     url = 'http://validate.msg.yahoo.com/mobileno?intl=%s&version=%s' % (intl, version)
  53.     headers = {
  54.         'Cookie': yahoo.cookie_str,
  55.         'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5)',
  56.         'Cache-Control': 'no-cache' }
  57.     log.info('POSTing SMS carrier request to %s', url)
  58.     xmlstr = validate._to_xml(self_closing = False, pretty = False)
  59.     log.info(xmlstr)
  60.     post_xml(url, xmlstr, success = on_response, error = on_error, **headers)
  61.     success = '\n    HTTP/1.1 200 OK\n    Date: Fri, 04 May 2007 15:09:26 GMT\n    P3P: policyref="http://p3p.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"\n    Content-Length: 140\n    Connection: close\n    Content-Type: text/html\n\n    <validate>\n      <mobile_no msisdn="17248406085">\n        <status>Valid</status>\n        <carrier>pcsms.us.verizon</carrier>\n      </mobile_no>\n    </validate>\n    '
  62.     error = '\n    HTTP/1.1 200 OK\n    Date: Fri, 04 May 2007 15:12:19 GMT\n    P3P: policyref="http://p3p.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"\n    Content-Length: 117\n    Connection: close\n    Content-Type: text/html\n\n    <validate>\n      <mobile_no msisdn="12">\n        <status>Unknown</status>\n        <carrier></carrier>\n      </mobile_no>\n    </validate>\n    '
  63.  
  64. get_carrier = callsback(get_carrier)
  65.  
  66. def send_sms(yahoo, sms_number, message, callback = None):
  67.     
  68.     try:
  69.         if isinstance(message, unicode):
  70.             message = message.encode('utf-8')
  71.         
  72.         sms_number = format_smsnumber(sms_number)
  73.         
  74.         def on_carrier(carrier):
  75.             log.info('sending Yahoo SMS packet to %s on carrier %s', sms_number, carrier)
  76.             me = yahoo.self_buddy
  77.             if not me.remote_alias:
  78.                 pass
  79.             yahoo.send('sms_message', 'available', [
  80.                 'frombuddy',
  81.                 me.name,
  82.                 'sms_alias',
  83.                 me.name,
  84.                 'to',
  85.                 sms_number,
  86.                 'sms_carrier',
  87.                 carrier,
  88.                 'message',
  89.                 message])
  90.  
  91.         get_carrier(yahoo, sms_number, success = on_carrier, error = callback.error)
  92.     except:
  93.         print_exc()
  94.  
  95.     callback.success()
  96.  
  97. send_sms = callsback(send_sms)
  98.  
  99. def format_smsnumber(sms):
  100.     if len(sms) == 10:
  101.         return '1' + sms
  102.     return sms
  103.  
  104. if __name__ == '__main__':
  105.     cookies = {
  106.         'Y': 'v=1&n=3lutd2l220eoo&l=a4l8dm0jj4hisqqv/o&p=m2l0e8v002000000&r=fr&lg=us&intl=us; path=/; domain=.yahoo.com',
  107.         'T': 'z=/V2OGB/bLPGB9ZlmrY27n5q&a=YAE&sk=DAAcD2qurh0ujr&d=YQFZQUUBb2sBWlcwLQF0aXABQldCb2lBAXp6AS9WMk9HQmdXQQ--; path=/; domain=.yahoo.com' }
  108.     headers = {
  109.         'Cookie': '; '.join([
  110.             cookies['Y'],
  111.             cookies['T']]),
  112.         'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5)',
  113.         'Cache-Control': 'no-cache' }
  114.     data = '<validate intl="us" version="8.1.0.209" qos="0"><mobile_no msisdn="17248406085"></mobile_no></validate>'
  115.     conn = httplib.HTTPConnection('validate.msg.yahoo.com', 80)
  116.     conn.set_debuglevel(10000)
  117.     conn.request('POST', '/mobileno?intl=us&version=8.1.0.209', data, headers)
  118.     resp = conn.getresponse()
  119.     print resp.status, resp.reason
  120.     if resp.status == 200:
  121.         print resp.read()
  122.     
  123.  
  124.