Remove delay parsing from Gajim

Use nbxmpp's delay parsing
This commit is contained in:
Philipp Hörist 2019-03-11 22:57:06 +01:00
parent f5fe4fd8de
commit da46bdda1f
3 changed files with 1 additions and 76 deletions

View file

@ -30,7 +30,6 @@ from gi.repository import GLib
from gajim.common import app from gajim.common import app
from gajim.common.nec import NetworkEvent from gajim.common.nec import NetworkEvent
from gajim.common.const import Chatstate as State from gajim.common.const import Chatstate as State
from gajim.common.modules.misc import parse_delay
from gajim.common.modules.base import BaseModule from gajim.common.modules.base import BaseModule
from gajim.common.connection_handlers_events import MessageOutgoingEvent from gajim.common.connection_handlers_events import MessageOutgoingEvent
from gajim.common.connection_handlers_events import GcMessageOutgoingEvent from gajim.common.connection_handlers_events import GcMessageOutgoingEvent
@ -53,7 +52,7 @@ def ensure_enabled(func):
def parse_chatstate(stanza: nbxmpp.Message) -> Optional[str]: def parse_chatstate(stanza: nbxmpp.Message) -> Optional[str]:
if parse_delay(stanza) is not None: if stanza.getTag('delay', namespace=nbxmpp.NS_DELAY2) is not None:
return None return None
children = stanza.getChildren() children = stanza.getChildren()

View file

@ -19,54 +19,10 @@ import logging
import nbxmpp import nbxmpp
from gajim.common import app from gajim.common import app
from gajim.common.modules.date_and_time import parse_datetime
log = logging.getLogger('gajim.c.m.misc') log = logging.getLogger('gajim.c.m.misc')
# XEP-0203: Delayed Delivery
def parse_delay(stanza, epoch=True, convert='utc', from_=None, not_from=None):
'''
Returns the first valid delay timestamp that matches
:param epoch: Returns the timestamp as epoch
:param convert: Converts the timestamp to either utc or local
:param from_: Matches only delays that have the according
from attr set
:param not_from: Matches only delays that have the according
from attr not set
'''
delays = stanza.getTags('delay', namespace=nbxmpp.NS_DELAY2)
for delay in delays:
stamp = delay.getAttr('stamp')
if stamp is None:
log.warning('Invalid timestamp received: %s', stamp)
log.warning(stanza)
continue
delay_from = delay.getAttr('from')
if from_ is not None:
if delay_from != from_:
continue
if not_from is not None:
if delay_from in not_from:
continue
timestamp = parse_datetime(stamp, check_utc=True,
epoch=epoch, convert=convert)
if timestamp is None:
log.warning('Invalid timestamp received: %s', stamp)
log.warning(stanza)
continue
return timestamp
# XEP-0066: Out of Band Data # XEP-0066: Out of Band Data
def parse_oob(event): def parse_oob(event):

View file

@ -1,30 +0,0 @@
import unittest
import nbxmpp
from gajim.common.modules.misc import parse_delay
class TestHelpers(unittest.TestCase):
def test_parse_delay(self):
node = """
<message>
<delay xmlns='urn:xmpp:delay' from='capulet.com' stamp='2002-09-10T23:08:25Z' />
<delay xmlns='urn:xmpp:delay' from='romeo.com' stamp='2010-09-10T23:08:25Z' />
<delay xmlns='urn:xmpp:delay' stamp='2015-09-10T23:08:25Z' />
</message>
"""
message = nbxmpp.Node(node=node)
timestamp = parse_delay(message)
self.assertEqual(timestamp, 1031699305.0)
timestamp = parse_delay(message, from_='capulet.com')
self.assertEqual(timestamp, 1031699305.0)
timestamp = parse_delay(message, from_='romeo.com')
self.assertEqual(timestamp, 1284160105.0)
timestamp = parse_delay(message, not_from=['romeo.com'])
self.assertEqual(timestamp, 1031699305.0)