home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 October / maximum-cd-2011-10.iso / DiscContents / digsby_setup.exe / lib / plugins / component_gtalk / gtalk.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2011-06-22  |  8.5 KB  |  211 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. from pyxmpp.jid import JID
  5. from jabber.objects.shared_status.status import SharedStatus, SHARED_STATUS_NS
  6. import jabber
  7. from logging import getLogger
  8. from common.actions import action
  9. from gtalkStream import GoogleTalkStream
  10. import util.callbacks as callbacks
  11. import uuid
  12. log = getLogger('gtalk.protocol')
  13. GTALK_SMS = False
  14. status_state_map = {
  15.     'available': 'normal',
  16.     'free for chat': 'normal',
  17.     'do not disturb': 'dnd' }
  18. GTALK_WAY = True
  19. from jabber import jbuddy
  20.  
  21. class GtalkBuddy(jbuddy):
  22.     sortservice = 'gtalk'
  23.  
  24.  
  25. class GoogleTalk(jabber.protocol):
  26.     name = 'gtalk'
  27.     service = 'gtalk'
  28.     status_state_map = status_state_map
  29.     supports_group_chat = True
  30.     buddy_class = GtalkBuddy
  31.     
  32.     def __init__(self, username, *a, **k):
  33.         self._idle = None
  34.         self._show = None
  35.         if '@' not in username:
  36.             username += '@gmail.com'
  37.         
  38.         jabber.protocol.__init__(self, username, *a, **k)
  39.         self.stream_class = GoogleTalkStream
  40.         self._invisible = False
  41.  
  42.     
  43.     def invisible(self):
  44.         return self._invisible
  45.  
  46.     invisible = jabber.protocol.invisible.getter(invisible)
  47.     
  48.     def invisible(self, value):
  49.         self._invisible = value
  50.  
  51.     invisible = invisible.setter(invisible)
  52.     if not GTALK_WAY:
  53.         
  54.         def set_idle(self, yes):
  55.             if yes:
  56.                 self._idle = self.show
  57.                 self.show = 'away'
  58.             else:
  59.                 self.show = self._idle
  60.             self.presence_push()
  61.  
  62.         
  63.         def set_message(self, message, status, format = None):
  64.             log.info('set_message(%s): %r', status, message)
  65.             state = status_state_map.get(status.lower(), 'dnd')
  66.             self.show = None if state != 'normal' else None
  67.             self._idle = self.show
  68.             self.status = message
  69.             self.presence_push()
  70.  
  71.     else:
  72.         
  73.         def set_idle(self, yes):
  74.             self._idle = bool(yes)
  75.             self.presence_push()
  76.  
  77.         
  78.         def set_message(self, message, status, format = None, default_status = 'dnd'):
  79.             jabber.protocol.set_message(self, message, status, format, default_status)
  80.  
  81.         
  82.         def __set_show(self, state):
  83.             self._show = state
  84.  
  85.         
  86.         def __get_show(self):
  87.             if self._idle:
  88.                 return 'away'
  89.             return self._show
  90.  
  91.         show = property(__get_show, __set_show)
  92.     
  93.     def change_password(self, *a):
  94.         pass
  95.  
  96.     change_password = action((lambda self: pass))(change_password)
  97.     
  98.     def edit_vcard(self, *a, **k):
  99.         pass
  100.  
  101.     edit_vcard = action((lambda self: pass))(edit_vcard)
  102.     if GTALK_SMS:
  103.         
  104.         def _get_caps(self):
  105.             import common
  106.             return jabber.protocol._get_caps(self) + [
  107.                 common.caps.SMS]
  108.  
  109.         caps = property(_get_caps)
  110.         
  111.         def send_sms(self, phone_number, message, callback = None):
  112.             jid = jabber.JID(phone_number, 'sms.talk.google.com')
  113.  
  114.         send_sms = callbacks.callsback(send_sms)
  115.     
  116.     
  117.     def session_started(self):
  118.         s = self.stream
  119.         s.set_iq_set_handler('query', SHARED_STATUS_NS, self.shared_status_set)
  120.         jabber.protocol.session_started(self)
  121.  
  122.     
  123.     def service_discovery_init(self):
  124.         self.disco_init = jabber.disco.DiscoNode(self.cache, JID(self.jid.domain))
  125.         self.disco_init.fetch(self.disco_finished, depth = 1, timeout_duration = 1)
  126.         self.disco_init2 = jabber.disco.DiscoNode(self.cache, JID('google.com'))
  127.         self.disco_init2.fetch(super(GoogleTalk, self).disco_finished, depth = 1, timeout_duration = 1)
  128.  
  129.     
  130.     def disco_finished(self, disco_node):
  131.         status_make_get = make_get
  132.         import jabber.objects.shared_status
  133.         i = status_make_get(self)
  134.         self.send_cb(i, success = self.unfreeze_presence, error = self.unfreeze_presence_error, timeout = self.unfreeze_presence_error, timeout_duration = 2)
  135.         jabber.protocol.disco_finished(self, disco_node)
  136.  
  137.     
  138.     def unfreeze_presence(self, stanza):
  139.         self.shared_status_set(stanza)
  140.         self._presence_push()
  141.  
  142.     
  143.     def unfreeze_presence_error(self, *a, **k):
  144.         self._presence_push()
  145.  
  146.     
  147.     def presence_push(self):
  148.         pass
  149.  
  150.     
  151.     def _presence_push(self):
  152.         self.presence_push = self._presence_push
  153.         shared = getattr(self, 'shared_status', None)
  154.         if shared is not None:
  155.             shared.show = self.show
  156.             shared.status = self.status
  157.             shared.invisible = self.invisible
  158.             i = shared.make_push(self)
  159.             
  160.             cb = lambda *a, **k: jabber.protocol.presence_push(self)
  161.             self.send_cb(i, success = cb, error = cb, timeout = cb, timeout_duration = 5)
  162.         else:
  163.             jabber.protocol.presence_push(self)
  164.  
  165.     
  166.     def shared_status_set(self, stanza):
  167.         old_shared = getattr(self, 'shared_status', None)
  168.         new_shared = SharedStatus(stanza.xmlnode)
  169.         for attr in ('status_max', 'status_list_max', 'status_list_contents_max'):
  170.             val = getattr(new_shared, attr.replace('-', '_'), None)
  171.             if val is None:
  172.                 setattr(new_shared, attr, getattr(old_shared, attr, None))
  173.                 continue
  174.         
  175.         self.shared_status = new_shared
  176.  
  177.     
  178.     def set_invisible(self, invisible = True):
  179.         self.invisible = invisible
  180.         self.presence_push()
  181.  
  182.     
  183.     def default_chat_server(self):
  184.         if self.confservers:
  185.             return self.confservers[0]
  186.         return 'groupchat.google.com'
  187.  
  188.     
  189.     def _get_chat_nick(self, nick):
  190.         if not nick:
  191.             nick = unicode(self.self_buddy.jid).replace('@', '_')
  192.         
  193.         return nick
  194.  
  195.     
  196.     def _get_chat_room_name(self, room_name):
  197.         if not room_name:
  198.             room_name = u'private-chat-' + unicode(uuid.uuid4())
  199.         
  200.         return room_name
  201.  
  202.     
  203.     def _add_presence_extras(self, pres):
  204.         c = pres.add_new_content('http://jabber.org/protocol/caps', 'c')
  205.         c.setProp('node', 'http://www.google.com/xmpp/client/caps')
  206.         c.setProp('ver', '1.1')
  207.         c.setProp('ext', 'pmuc-v1 voice-v1 video-v1 camera-v1')
  208.         return super(GoogleTalk, self)._add_presence_extras(pres)
  209.  
  210.  
  211.