diff --git a/src/tmp/wokkel/mam.py b/src/tmp/wokkel/mam.py
index 4dbf59c0..0e4cbbae 100644
--- a/src/tmp/wokkel/mam.py
+++ b/src/tmp/wokkel/mam.py
@@ -93,8 +93,9 @@ class MAMRequest(object):
@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 @@ class MAMRequest(object):
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 @@ class MAMRequest(object):
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 MAMClient(subprotocols.XMPPHandler):
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 @@ class MAMService(subprotocols.XMPPHandler, subprotocols.IQHandlerMixin):
"""
iq.handled = True
mam_ = self._request_class.fromElement(iq)
- requestor = jid.JID(iq['from'])
# remove unsupported filters
unsupported_fields = []
@@ -517,7 +518,7 @@ class MAMService(subprotocols.XMPPHandler, subprotocols.IQHandlerMixin):
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