plugin XEP-0203, core (xmpp): leave the management of delay element to XEP-0203 (fix bug 59):

- this patch reveals a bug in primitivus Chat.printMessage relative to MUC history (the test to discard duplicates is wrong)
This commit is contained in:
souliane 2015-12-11 11:25:29 +01:00
commit ab7ae07a83

View file

@ -22,6 +22,7 @@ from sat.core.i18n import _
from sat.core.log import getLogger
log = getLogger(__name__)
from calendar import timegm
from wokkel import disco, iwokkel, delay
try:
from twisted.words.protocols.xmlstream import XMPPHandler
@ -48,6 +49,8 @@ class XEP_0203(object):
def __init__(self, host):
log.info(_("Delayed Delivery plugin initialization"))
self.host = host
host.trigger.add("MessageReceived", self.messageReceivedTrigger)
def getHandler(self, profile):
return XEP_0203_handler(self, profile)
@ -68,6 +71,30 @@ class XEP_0203(object):
parent.addChild(elt)
return elt
def messagePostTreat(self, data, timestamp):
"""Set the timestamp of a received message.
@param data (dict): data send by MessageReceived trigger through post_treat deferred
@param timestamp (int): original timestamp of a delayed message
@return: dict
"""
data['extra']['timestamp'] = unicode(timestamp)
return data
def messageReceivedTrigger(self, message, post_treat, profile):
"""Process a delay element from incoming message.
@param message (domish.Element): message element
@param post_treat (Deferred): deferred instance to add post treatments
"""
try:
delay_ = delay.Delay.fromElement([elm for elm in message.elements() if elm.name == 'delay'][0])
except IndexError:
return True
else:
timestamp = timegm(delay_.stamp.utctimetuple())
post_treat.addCallback(self.messagePostTreat, timestamp)
return True
class XEP_0203_handler(XMPPHandler):
implements(iwokkel.IDisco)