Mercurial > sat_tmp
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") |