fix some bad merge
This commit is contained in:
parent
b47248f09d
commit
f7b0659c04
|
@ -2128,310 +2128,3 @@ ConnectionJingle, ConnectionIBBytestream):
|
|||
con.RegisterHandler('iq', self._PubkeyGetCB, 'get', common.xmpp.NS_PUBKEY_PUBKEY)
|
||||
con.RegisterHandler('iq', self._PubkeyResultCB, 'result', common.xmpp.NS_PUBKEY_PUBKEY)
|
||||
|
||||
class HelperEvent:
|
||||
def get_jid_resource(self):
|
||||
if 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):
|
||||
if not self.conn:
|
||||
self.conn = self.base_event.conn
|
||||
if not self.iq_obj:
|
||||
self.iq_obj = self.base_event.xmpp_iq
|
||||
|
||||
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):
|
||||
if not self.conn:
|
||||
self.conn = self.base_event.conn
|
||||
if not self.iq_obj:
|
||||
self.iq_obj = self.base_event.xmpp_iq
|
||||
|
||||
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):
|
||||
if not self.conn:
|
||||
self.conn = self.base_event.conn
|
||||
if not self.iq_obj:
|
||||
self.iq_obj = self.base_event.xmpp_iq
|
||||
|
||||
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):
|
||||
if not self.conn:
|
||||
self.conn = self.base_event.conn
|
||||
if not self.iq_obj:
|
||||
self.iq_obj = self.base_event.xmpp_iq
|
||||
|
||||
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.conn:
|
||||
self.conn = self.base_event.conn
|
||||
if not self.iq_obj:
|
||||
self.iq_obj = self.base_event.xmpp_iq
|
||||
|
||||
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):
|
||||
if not self.conn:
|
||||
self.conn = self.base_event.conn
|
||||
if not self.iq_obj:
|
||||
self.iq_obj = self.base_event.xmpp_iq
|
||||
|
||||
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 exchange_items_list:
|
||||
return True
|
||||
|
||||
class VersionRequestEvent(nec.NetworkIncomingEvent):
|
||||
name = 'version-request-received'
|
||||
base_network_events = []
|
||||
|
||||
def generate(self):
|
||||
if not self.conn:
|
||||
self.conn = self.base_event.conn
|
||||
if not self.iq_obj:
|
||||
self.iq_obj = self.base_event.xmpp_iq
|
||||
|
||||
return True
|
||||
|
||||
class LastRequestEvent(nec.NetworkIncomingEvent):
|
||||
name = 'last-request-received'
|
||||
base_network_events = []
|
||||
|
||||
def generate(self):
|
||||
if not self.conn:
|
||||
self.conn = self.base_event.conn
|
||||
if not self.iq_obj:
|
||||
self.iq_obj = self.base_event.xmpp_iq
|
||||
|
||||
return True
|
||||
|
||||
class TimeRequestEvent(nec.NetworkIncomingEvent):
|
||||
name = 'time-request-received'
|
||||
base_network_events = []
|
||||
|
||||
def generate(self):
|
||||
if not self.conn:
|
||||
self.conn = self.base_event.conn
|
||||
if not self.iq_obj:
|
||||
self.iq_obj = self.base_event.xmpp_iq
|
||||
|
||||
return True
|
||||
|
||||
class TimeRevisedRequestEvent(nec.NetworkIncomingEvent):
|
||||
name = 'time-revised-request-received'
|
||||
base_network_events = []
|
||||
|
||||
def generate(self):
|
||||
if not self.conn:
|
||||
self.conn = self.base_event.conn
|
||||
if not self.iq_obj:
|
||||
self.iq_obj = self.base_event.xmpp_iq
|
||||
|
||||
return True
|
|
@ -154,7 +154,7 @@ class ConnectionJingle(object):
|
|||
jingle.on_session_state_changed(c)
|
||||
else:
|
||||
jingle = JingleSession(self, weinitiate=True, jid=jid)
|
||||
self.__sessions__[jingle.sid] = jingle
|
||||
self._sessions[jingle.sid] = jingle
|
||||
file_props['sid'] = jingle.sid
|
||||
c = JingleFileTransfer(jingle, file_props=file_props,
|
||||
use_security=use_security)
|
||||
|
|
Loading…
Reference in New Issue