# HG changeset patch # User Goffi # Date 1452275663 -3600 # Node ID 73465c02045523f5ea8d83ac0ac0f72bc688bce1 # Parent 17ab4fbce5130d3f0e7a60602a1b4c5a3450f611 tmp (wokkel.mam): recipient and sender are handled in MAM Request. TODO: MAMRequest should inherit from generic.Stanza, the same way as for PubSubRequest diff -r 17ab4fbce513 -r 73465c020455 wokkel/mam.py --- a/wokkel/mam.py Fri Jan 08 18:52:28 2016 +0100 +++ b/wokkel/mam.py Fri Jan 08 18:54:23 2016 +0100 @@ -93,8 +93,9 @@ @ivar query_id: id to use to track the query @itype form: C{unicode} """ + # FIXME: should be based on generic.Stanza - def __init__(self, form=None, rsm_=None, node=None, query_id=None): + def __init__(self, form=None, rsm_=None, node=None, query_id=None, sender=None, recipient=None): if form is not None: assert form.formType == 'submit' assert form.formNamespace == NS_MAM @@ -102,19 +103,23 @@ self.rsm = rsm_ self.node = node self.query_id = query_id + self.sender = sender + self.recipient = recipient @classmethod - def fromElement(cls, element): + def fromElement(cls, iq): """Parse the DOM representation of a MAM request. - @param element: element containing a MAM . - @type element: L{Element} + @param iq: element containing a MAM . + @type iq: L{Element} @return: MAMRequest instance. @rtype: L{MAMRequest} """ + sender = jid.JID(iq.getAttribute('from')) + recipient = jid.JID(iq.getAttribute('to')) try: - query = element.elements(NS_MAM, 'query').next() + query = iq.elements(NS_MAM, 'query').next() except StopIteration: raise MAMError("Can't find MAM in element") form = data_form.findForm(query, NS_MAM) @@ -124,7 +129,7 @@ rsm_request = None node = query.getAttribute('node') query_id = query.getAttribute('queryid') - return MAMRequest(form, rsm_request, node, query_id) + return MAMRequest(form, rsm_request, node, query_id, sender, recipient) def toElement(self): """ @@ -350,15 +355,12 @@ class IMAMResource(Interface): - def onArchiveRequest(self, mam, requestor): + def onArchiveRequest(self, mam): """ @param mam: The MAM request. @type mam: L{MAMQueryReques} - @param requestor: JID of the requestor. - @type requestor: L{JID} - @return: The RSM answer. @rtype: L{RSMResponse} """ @@ -482,7 +484,6 @@ """ iq.handled = True mam_ = self._request_class.fromElement(iq) - requestor = jid.JID(iq['from']) # remove unsupported filters unsupported_fields = [] @@ -517,7 +518,7 @@ fin_elt.addChild(rsm_elt) return fin_elt - d = defer.maybeDeferred(self.resource.onArchiveRequest, mam_, requestor) + d = defer.maybeDeferred(self.resource.onArchiveRequest, mam_) d.addCallback(cb) return d