changeset 30:73465c020455

tmp (wokkel.mam): recipient and sender are handled in MAM Request. TODO: MAMRequest should inherit from generic.Stanza, the same way as for PubSubRequest
author Goffi <goffi@goffi.org>
date Fri, 08 Jan 2016 18:54:23 +0100
parents 17ab4fbce513
children e79eedd9c56a
files wokkel/mam.py
diffstat 1 files changed, 13 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- 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 <query/> request.
 
-        @param element: element containing a MAM <query/>.
-        @type element: L{Element<twisted.words.xish.domish.Element>}
+        @param iq: <iq/> element containing a MAM <query/>.
+        @type iq: L{Element<twisted.words.xish.domish.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 <query/> 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 <query/> request.
         @type mam: L{MAMQueryReques<wokkel.mam.MAMRequest>}
 
-        @param requestor: JID of the requestor.
-        @type requestor: L{JID<twisted.words.protocols.jabber.jid.JID>}
-
         @return: The RSM answer.
         @rtype: L{RSMResponse<wokkel.rsm.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