comparison sat_tmp/wokkel/rsm.py @ 85:ba3f695fff34

wokkel(rsm): add RSM and Pubsub RSM features to disco
author Goffi <goffi@goffi.org>
date Tue, 25 Jan 2022 18:53:37 +0100
parents 896e76caa204
children 42cb377e3f3e
comparison
equal deleted inserted replaced
84:896e76caa204 85:ba3f695fff34
25 U{XEP-0059<http://xmpp.org/extensions/xep-0059.html>}. 25 U{XEP-0059<http://xmpp.org/extensions/xep-0059.html>}.
26 """ 26 """
27 27
28 from twisted.words.xish import domish 28 from twisted.words.xish import domish
29 from twisted.words.protocols.jabber import error 29 from twisted.words.protocols.jabber import error
30 from wokkel import disco
30 31
31 from . import pubsub 32 from . import pubsub
32 import copy 33 import copy
33 34
34 35
35 NS_RSM = 'http://jabber.org/protocol/rsm' 36 NS_RSM = 'http://jabber.org/protocol/rsm'
37 NS_PUBSUB_RSM = "http://jabber.org/protocol/pubsub#rsm"
36 38
37 39
38 class RSMError(error.StanzaError): 40 class RSMError(error.StanzaError):
39 """ 41 """
40 RSM error. 42 RSM error.
422 if rsm_response is not None: 424 if rsm_response is not None:
423 response.addChild(rsm_response.toElement()) 425 response.addChild(rsm_response.toElement())
424 426
425 return response 427 return response
426 428
429 def getDiscoInfo(self, requestor, target, nodeIdentifier=''):
430 def appendRSMFeatures(info):
431 for ns in (NS_RSM, NS_PUBSUB_RSM):
432 feature = disco.DiscoFeature(ns)
433 if feature not in info:
434 info.append(feature)
435 return info
436 d = super().getDiscoInfo(requestor, target, nodeIdentifier)
437 d.addCallback(appendRSMFeatures)
438 return d
439
427 440
428 PubSubService._legacyHandlers["items"][1].append("rsm") 441 PubSubService._legacyHandlers["items"][1].append("rsm")