changeset b155160cbfed in /home/hg/repos/gajim
details:http://hg.gajim.org/gajim?cmd=changeset;node=b155160cbfed description: some refactoring in presence event generator
diffstat:
src/common/connection_handlers_events.py | 84 ++++++++++++++++++------------- 1 files changed, 48 insertions(+), 36 deletions(-)
diffs (136 lines):
diff -r b6d211de9cd3 -r b155160cbfed src/common/connection_handlers_events.py --- a/src/common/connection_handlers_events.py Tue Oct 05 10:51:15 2010 +0200 +++ b/src/common/connection_handlers_events.py Tue Oct 05 12:25:56 2010 +0200 @@ -602,6 +602,45 @@ name = 'presence-received' base_network_events = ['raw-pres-received']
+ def _generate_keyID(self, sig_tag): + self.keyID = '' + if sig_tag and self.conn.USE_GPG and self.ptype != 'error': + # error presences contain our own signature + # verify + sig_msg = sig_tag.getData() + self.keyID = self.conn.gpg.verify(self.status, sig_msg) + self.keyID = helpers.prepare_and_validate_gpg_keyID(self.conn.name, + self.jid, self.keyID) + + def _generate_timestamp(self, tag): + tim = helpers.datetime_tuple(tag) + self.timestamp = localtime(timegm(tim)) + + def _generate_show(self): + self.show = self.iq_obj.getShow() + if self.show not in ('chat', 'away', 'xa', 'dnd'): + self.show = '' # We ignore unknown show + if not self.ptype and not self.show: + self.show = 'online' + elif self.ptype == 'unavailable': + self.show = 'offline' + + def _generate_prio(self): + self.prio = self.iq_obj.getPriority() + try: + self.prio = int(self.prio) + except Exception: + self.prio = 0 + + def _generate_ptype(self): + self.ptype = self.iq_obj.getType() + if self.ptype == 'available': + self.ptype = None + rfc_types = ('unavailable', 'error', 'subscribe', 'subscribed', + 'unsubscribe', 'unsubscribed') + if self.ptype and not self.ptype in rfc_types: + self.ptype = None + def generate(self): self.conn = self.base_event.conn self.iq_obj = self.base_event.iq_obj @@ -609,16 +648,11 @@ self.need_add_in_roster = False self.need_redraw = False
- self.ptype = self.iq_obj.getType() - if self.ptype == 'available': - self.ptype = None - rfc_types = ('unavailable', 'error', 'subscribe', 'subscribed', - 'unsubscribe', 'unsubscribed') - if self.ptype and not self.ptype in rfc_types: - self.ptype = None if not self.conn or self.conn.connected < 2: log.debug('account is no more connected') return + + self._generate_ptype() try: self.get_jid_resource() except Exception: @@ -636,7 +670,7 @@ self.timestamp = None self.get_id() self.is_gc = False # is it a GC presence ? - sigTag = None + sig_tag = None self.avatar_sha = None # XEP-0172 User Nickname self.user_nick = self.iq_obj.getTagData('nick') or '' @@ -645,24 +679,20 @@ # XEP-0203 delay_tag = self.iq_obj.getTag('delay', namespace=xmpp.NS_DELAY2) if delay_tag: - tim = self.iq_obj.getTimestamp2() - tim = helpers.datetime_tuple(tim) - self.timestamp = localtime(timegm(tim)) + self._generate_timestamp(self.iq_obj.getTimestamp2()) xtags = self.iq_obj.getTags('x') for x in xtags: namespace = x.getNamespace() if namespace.startswith(xmpp.NS_MUC): self.is_gc = True elif namespace == xmpp.NS_SIGNED: - sigTag = x + sig_tag = x elif namespace == xmpp.NS_VCARD_UPDATE: self.avatar_sha = x.getTagData('photo') self.contact_nickname = x.getTagData('nickname') elif namespace == xmpp.NS_DELAY and not self.timestamp: # XEP-0091 - tim = self.iq_obj.getTimestamp() - tim = helpers.datetime_tuple(tim) - self.timestamp = localtime(timegm(tim)) + self._generate_timestamp(self.iq_obj.getTimestamp()) elif namespace == 'http://delx.cjb.net/protocol/roster-subsync': # see http://trac.gajim.org/ticket/326 agent = gajim.get_server_from_jid(self.jid) @@ -678,27 +708,9 @@ if self.id_.split('_')[-1] == h: self.is_gc = True self.status = self.iq_obj.getStatus() or '' - self.show = self.iq_obj.getShow() - if self.show not in ('chat', 'away', 'xa', 'dnd'): - self.show = '' # We ignore unknown show - if not self.ptype and not self.show: - self.show = 'online' - elif self.ptype == 'unavailable': - self.show = 'offline' - - self.prio = self.iq_obj.getPriority() - try: - self.prio = int(self.prio) - except Exception: - self.prio = 0 - self.keyID = '' - if sigTag and self.conn.USE_GPG and self.ptype != 'error': - # error presences contain our own signature - # verify - sigmsg = sigTag.getData() - self.keyID = self.conn.gpg.verify(self.status, sigmsg) - self.keyID = helpers.prepare_and_validate_gpg_keyID(self.conn.name, - self.jid, self.keyID) + self._generate_show() + self._generate_prio() + self._generate_keyID(sig_tag)
self.errcode = self.iq_obj.getErrorCode() self.errmsg = self.iq_obj.getErrorMsg()