home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2009 June / maximum-cd-2009-06.iso / DiscContents / digsby_setup.exe / lib / yahoo / yahoohttp.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-02-26  |  5.6 KB  |  128 lines

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