changeset c9a551ad0bb4 in /home/hg/repos/gajim

details:http://hg.gajim.org/gajim?cmd=changeset;node=c9a551ad0bb4
description: move network events classes to a new file

diffstat:

 src/common/connection_handlers.py        |  421 +---------------------------
 src/common/connection_handlers_events.py |  475 +++++++++++++++++++++++++++++++
 src/common/pubsub.py                     |   36 +--
 3 files changed, 480 insertions(+), 452 deletions(-)

diffs (truncated from 980 to 300 lines):

diff -r e35e21903e39 -r c9a551ad0bb4 src/common/connection_handlers.py
--- a/src/common/connection_handlers.py Fri Aug 27 23:53:17 2010 +0200
+++ b/src/common/connection_handlers.py Sat Aug 28 00:25:07 2010 +0200
@@ -38,45 +38,10 @@
 from time import (altzone, daylight, gmtime, localtime, mktime, strftime,
         time as time_time, timezone, tzname)
 from calendar import timegm
-import datetime
 
 import common.xmpp
 import common.caps_cache as capscache
 
-# This cass is needed in pubsub.py, so we need to create it before importing
-# pubsub
-class BookmarksHelper:
-    def parse_bookmarks(self):
-        self.bookmarks = []
-        confs = self.base_event.storage_node.getTags('conference')
-        for conf in confs:
-            autojoin_val = conf.getAttr('autojoin')
-            if autojoin_val is None: # not there (it's optional)
-                autojoin_val = False
-            minimize_val = conf.getAttr('minimize')
-            if minimize_val is None: # not there (it's optional)
-                minimize_val = False
-            print_status = conf.getTagData('print_status')
-            if not print_status:
-                print_status = conf.getTagData('show_status')
-            try:
-                jid = helpers.parse_jid(conf.getAttr('jid'))
-            except common.helpers.InvalidFormat:
-                log.warn('Invalid JID: %s, ignoring it' % conf.getAttr('jid'))
-                continue
-            bm = {'name': conf.getAttr('name'),
-                'jid': jid,
-                'autojoin': autojoin_val,
-                'minimize': minimize_val,
-                'password': conf.getTagData('password'),
-                'nick': conf.getTagData('nick'),
-                'print_status': print_status}
-
-
-            bm_jids = [b['jid'] for b in self.bookmarks]
-            if bm['jid'] not in bm_jids:
-                self.bookmarks.append(bm)
-
 from common import helpers
 from common import gajim
 from common import exceptions
@@ -91,6 +56,7 @@
 from common.message_archiving import ARCHIVING_COLLECTIONS_ARRIVED
 from common.message_archiving import ARCHIVING_COLLECTION_ARRIVED
 from common.message_archiving import ARCHIVING_MODIFICATIONS_ARRIVED
+from common.connection_handlers_events import *
 
 from common import ged
 from common import nec
@@ -2398,387 +2364,4 @@
         con.RegisterHandler('iq', self._ResultCB, 'result')
         con.RegisterHandler('presence', self._StanzaArrivedCB)
         con.RegisterHandler('message', self._StanzaArrivedCB)
-        con.RegisterHandler('unknown', self._StreamCB, 
'urn:ietf:params:xml:ns:xmpp-streams', xmlns='http://etherx.jabber.org/streams')
-
-class HelperEvent:
-    def get_jid_resource(self):
-        if hasattr(self, 'id_') and self.id_ in self.conn.groupchat_jids:
-            self.fjid = self.conn.groupchat_jids[self.id_]
-            del self.conn.groupchat_jids[self.id_]
-        else:
-            self.fjid = helpers.get_full_jid_from_iq(self.iq_obj)
-        self.jid, self.resource = gajim.get_room_and_nick_from_fjid(self.fjid)
-
-    def get_id(self):
-        self.id_ = self.iq_obj.getID()
-
-class HttpAuthReceivedEvent(nec.NetworkIncomingEvent):
-    name = 'http-auth-received'
-    base_network_events = []
-
-    def generate(self):
-        self.opt = gajim.config.get_per('accounts', self.conn.name, 
'http_auth')
-        self.iq_id = self.iq_obj.getTagAttr('confirm', 'id')
-        self.method = self.iq_obj.getTagAttr('confirm', 'method')
-        self.url = self.iq_obj.getTagAttr('confirm', 'url')
-        # In case it's a message with a body
-        self.msg = self.iq_obj.getTagData('body')
-        return True
-
-class LastResultReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
-    name = 'last-result-received'
-    base_network_events = []
-
-    def generate(self):
-        self.get_id()
-        self.get_jid_resource()
-        if self.id_ in self.conn.last_ids:
-            self.conn.last_ids.remove(self.id_)
-
-        self.status = ''
-        self.seconds = -1
-
-        if self.iq_obj.getType() == 'error':
-            return True
-
-        qp = self.iq_obj.getTag('query')
-        sec = qp.getAttr('seconds')
-        self.status = qp.getData()
-        try:
-            self.seconds = int(sec)
-        except Exception:
-            return
-
-        return True
-
-class VersionResultReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
-    name = 'version-result-received'
-    base_network_events = []
-
-    def generate(self):
-        self.get_id()
-        self.get_jid_resource()
-        if self.id_ in self.conn.version_ids:
-            self.conn.version_ids.remove(self.id_)
-
-        self.client_info = ''
-        self.os_info = ''
-
-        if self.iq_obj.getType() == 'error':
-            return True
-
-        qp = self.iq_obj.getTag('query')
-        if qp.getTag('name'):
-            self.client_info += qp.getTag('name').getData()
-        if qp.getTag('version'):
-            self.client_info += ' ' + qp.getTag('version').getData()
-        if qp.getTag('os'):
-            self.os_info += qp.getTag('os').getData()
-
-        return True
-
-class TimeResultReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
-    name = 'time-result-received'
-    base_network_events = []
-
-    def generate(self):
-        self.get_id()
-        self.get_jid_resource()
-        if self.id_ in self.conn.entity_time_ids:
-            self.conn.entity_time_ids.remove(self.id_)
-
-        self.time_info = ''
-
-        if self.iq_obj.getType() == 'error':
-            return True
-
-        qp = self.iq_obj.getTag('time')
-        if not qp:
-            # wrong answer
-            return
-        tzo = qp.getTag('tzo').getData()
-        if tzo.lower() == 'z':
-            tzo = '0:0'
-        tzoh, tzom = tzo.split(':')
-        utc_time = qp.getTag('utc').getData()
-        ZERO = datetime.timedelta(0)
-        class UTC(datetime.tzinfo):
-            def utcoffset(self, dt):
-                return ZERO
-            def tzname(self, dt):
-                return "UTC"
-            def dst(self, dt):
-                return ZERO
-
-        class contact_tz(datetime.tzinfo):
-            def utcoffset(self, dt):
-                return datetime.timedelta(hours=int(tzoh), minutes=int(tzom))
-            def tzname(self, dt):
-                return "remote timezone"
-            def dst(self, dt):
-                return ZERO
-
-        try:
-            t = datetime.datetime.strptime(utc_time, '%Y-%m-%dT%H:%M:%SZ')
-            t = t.replace(tzinfo=UTC())
-            self.time_info = t.astimezone(contact_tz()).strftime('%c')
-        except ValueError, e:
-            log.info('Wrong time format: %s' % str(e))
-            return
-
-        return True
-
-class GMailQueryReceivedEvent(nec.NetworkIncomingEvent):
-    name = 'gmail-notify'
-    base_network_events = []
-
-    def generate(self):
-        if not self.iq_obj.getTag('mailbox'):
-            return
-        mb = self.iq_obj.getTag('mailbox')
-        if not mb.getAttr('url'):
-            return
-        self.conn.gmail_url = mb.getAttr('url')
-        if mb.getNamespace() != common.xmpp.NS_GMAILNOTIFY:
-            return
-        self.newmsgs = mb.getAttr('total-matched')
-        if not self.newmsgs:
-            return
-        if self.newmsgs == '0':
-            return
-        # there are new messages
-        self.gmail_messages_list = []
-        if mb.getTag('mail-thread-info'):
-            gmail_messages = mb.getTags('mail-thread-info')
-            for gmessage in gmail_messages:
-                unread_senders = []
-                for sender in gmessage.getTag('senders').getTags(
-                'sender'):
-                    if sender.getAttr('unread') != '1':
-                        continue
-                    if sender.getAttr('name'):
-                        unread_senders.append(sender.getAttr('name') + \
-                            '< ' + sender.getAttr('address') + '>')
-                    else:
-                        unread_senders.append(sender.getAttr('address'))
-
-                if not unread_senders:
-                    continue
-                gmail_subject = gmessage.getTag('subject').getData()
-                gmail_snippet = gmessage.getTag('snippet').getData()
-                tid = int(gmessage.getAttr('tid'))
-                if not self.conn.gmail_last_tid or \
-                tid > self.conn.gmail_last_tid:
-                    self.conn.gmail_last_tid = tid
-                self.gmail_messages_list.append({
-                    'From': unread_senders,
-                    'Subject': gmail_subject,
-                    'Snippet': gmail_snippet,
-                    'url': gmessage.getAttr('url'),
-                    'participation': gmessage.getAttr('participation'),
-                    'messages': gmessage.getAttr('messages'),
-                    'date': gmessage.getAttr('date')})
-            self.conn.gmail_last_time = int(mb.getAttr('result-time'))
-
-        self.jid = gajim.get_jid_from_account(self.name)
-        log.debug(('You have %s new gmail e-mails on %s.') % (self.newmsgs,
-            self.jid))
-        return True
-
-class RosterItemExchangeEvent(nec.NetworkIncomingEvent, HelperEvent):
-    name = 'roster-item-exchange-received'
-    base_network_events = []
-
-    def generate(self):
-        self.get_id()
-        self.get_jid_resource()
-        self.exchange_items_list = {}
-        items_list = self.iq_obj.getTag('x').getChildren()
-        if not items_list:
-            return
-        self.action = items_list[0].getAttr('action')
-        if self.action is None:
-            self.action = 'add'
-        for item in self.iq_obj.getTag('x', namespace=common.xmpp.NS_ROSTERX).\
-        getChildren():
-            try:
-                jid = helpers.parse_jid(item.getAttr('jid'))
-            except common.helpers.InvalidFormat:
-                log.warn('Invalid JID: %s, ignoring it' % item.getAttr('jid'))
-                continue
-            name = item.getAttr('name')
-            contact = gajim.contacts.get_contact(self.conn.name, jid)
-            groups = []
-            same_groups = True
-            for group in item.getTags('group'):
-                groups.append(group.getData())
-                # check that all suggested groups are in the groups we have 
for this
-                # contact
-                if not contact or group not in contact.groups:
-                    same_groups = False
-            if contact:
-                # check that all groups we have for this contact are in the
-                # suggested groups
-                for group in contact.groups:
-                    if group not in groups:
-                        same_groups = False
-                if contact.sub in ('both', 'to') and same_groups:
-                    continue
-            self.exchange_items_list[jid] = []
-            self.exchange_items_list[jid].append(name)
-            self.exchange_items_list[jid].append(groups)
-        if self.exchange_items_list:
-            return True
-
-class VersionRequestEvent(nec.NetworkIncomingEvent):
-    name = 'version-request-received'
-    base_network_events = []
-
-class LastRequestEvent(nec.NetworkIncomingEvent):
-    name = 'last-request-received'
-    base_network_events = []
_______________________________________________
Commits mailing list
[email protected]
http://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to