tmp (wokkel.mam): recipient and sender are handled in MAM Request. TODO: MAMRequest should inherit from generic.Stanza, the same way as for PubSubRequest
This commit is contained in:
parent
e6a8b8ac85
commit
cab9a9645e
1 changed files with 13 additions and 12 deletions
|
|
@ -93,8 +93,9 @@ class MAMRequest(object):
|
||||||
@ivar query_id: id to use to track the query
|
@ivar query_id: id to use to track the query
|
||||||
@itype form: C{unicode}
|
@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:
|
if form is not None:
|
||||||
assert form.formType == 'submit'
|
assert form.formType == 'submit'
|
||||||
assert form.formNamespace == NS_MAM
|
assert form.formNamespace == NS_MAM
|
||||||
|
|
@ -102,19 +103,23 @@ class MAMRequest(object):
|
||||||
self.rsm = rsm_
|
self.rsm = rsm_
|
||||||
self.node = node
|
self.node = node
|
||||||
self.query_id = query_id
|
self.query_id = query_id
|
||||||
|
self.sender = sender
|
||||||
|
self.recipient = recipient
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def fromElement(cls, element):
|
def fromElement(cls, iq):
|
||||||
"""Parse the DOM representation of a MAM <query/> request.
|
"""Parse the DOM representation of a MAM <query/> request.
|
||||||
|
|
||||||
@param element: element containing a MAM <query/>.
|
@param iq: <iq/> element containing a MAM <query/>.
|
||||||
@type element: L{Element<twisted.words.xish.domish.Element>}
|
@type iq: L{Element<twisted.words.xish.domish.Element>}
|
||||||
|
|
||||||
@return: MAMRequest instance.
|
@return: MAMRequest instance.
|
||||||
@rtype: L{MAMRequest}
|
@rtype: L{MAMRequest}
|
||||||
"""
|
"""
|
||||||
|
sender = jid.JID(iq.getAttribute('from'))
|
||||||
|
recipient = jid.JID(iq.getAttribute('to'))
|
||||||
try:
|
try:
|
||||||
query = element.elements(NS_MAM, 'query').next()
|
query = iq.elements(NS_MAM, 'query').next()
|
||||||
except StopIteration:
|
except StopIteration:
|
||||||
raise MAMError("Can't find MAM <query/> in element")
|
raise MAMError("Can't find MAM <query/> in element")
|
||||||
form = data_form.findForm(query, NS_MAM)
|
form = data_form.findForm(query, NS_MAM)
|
||||||
|
|
@ -124,7 +129,7 @@ class MAMRequest(object):
|
||||||
rsm_request = None
|
rsm_request = None
|
||||||
node = query.getAttribute('node')
|
node = query.getAttribute('node')
|
||||||
query_id = query.getAttribute('queryid')
|
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):
|
def toElement(self):
|
||||||
"""
|
"""
|
||||||
|
|
@ -350,15 +355,12 @@ class MAMClient(subprotocols.XMPPHandler):
|
||||||
|
|
||||||
class IMAMResource(Interface):
|
class IMAMResource(Interface):
|
||||||
|
|
||||||
def onArchiveRequest(self, mam, requestor):
|
def onArchiveRequest(self, mam):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@param mam: The MAM <query/> request.
|
@param mam: The MAM <query/> request.
|
||||||
@type mam: L{MAMQueryReques<wokkel.mam.MAMRequest>}
|
@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.
|
@return: The RSM answer.
|
||||||
@rtype: L{RSMResponse<wokkel.rsm.RSMResponse>}
|
@rtype: L{RSMResponse<wokkel.rsm.RSMResponse>}
|
||||||
"""
|
"""
|
||||||
|
|
@ -482,7 +484,6 @@ class MAMService(subprotocols.XMPPHandler, subprotocols.IQHandlerMixin):
|
||||||
"""
|
"""
|
||||||
iq.handled = True
|
iq.handled = True
|
||||||
mam_ = self._request_class.fromElement(iq)
|
mam_ = self._request_class.fromElement(iq)
|
||||||
requestor = jid.JID(iq['from'])
|
|
||||||
|
|
||||||
# remove unsupported filters
|
# remove unsupported filters
|
||||||
unsupported_fields = []
|
unsupported_fields = []
|
||||||
|
|
@ -517,7 +518,7 @@ class MAMService(subprotocols.XMPPHandler, subprotocols.IQHandlerMixin):
|
||||||
fin_elt.addChild(rsm_elt)
|
fin_elt.addChild(rsm_elt)
|
||||||
return fin_elt
|
return fin_elt
|
||||||
|
|
||||||
d = defer.maybeDeferred(self.resource.onArchiveRequest, mam_, requestor)
|
d = defer.maybeDeferred(self.resource.onArchiveRequest, mam_)
|
||||||
d.addCallback(cb)
|
d.addCallback(cb)
|
||||||
return d
|
return d
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue