plugin XEP-0060: handle purge notifications

This commit is contained in:
Goffi 2021-07-29 15:54:54 +02:00
commit 42979a7140
2 changed files with 15 additions and 1 deletions

View file

@ -237,9 +237,10 @@ class Const(object):
PS_PUBLISH = "publish"
PS_RETRACT = "retract" # used for items
PS_DELETE = "delete" # used for nodes
PS_PURGE = "purge" # used for nodes
PS_ITEM = "item"
PS_ITEMS = "items" # Can contain publish and retract items
PS_EVENTS = (PS_ITEMS, PS_DELETE)
PS_EVENTS = (PS_ITEMS, PS_DELETE, PS_PURGE)
## MESSAGE/NOTIFICATION LEVELS ##

View file

@ -1529,6 +1529,19 @@ class SatPubSubClient(rsm.PubSubClient):
event.sender.full(), event.nodeIdentifier, C.PS_DELETE, [], client.profile
)
def purgeReceived(self, event):
log.debug(("Publish node purged"))
for callback in self._getNodeCallbacks(event.nodeIdentifier, C.PS_PURGE):
d = utils.asDeferred(callback, self.parent, event)
d.addErrback(lambda f: log.error(
f"Error while running purge event callback {callback}: {f}"
))
client = self.parent
if (event.sender, event.nodeIdentifier) in client.pubsub_watching:
self.host.bridge.psEventRaw(
event.sender.full(), event.nodeIdentifier, C.PS_PURGE, [], client.profile
)
def subscriptions(self, service, nodeIdentifier, sender=None):
"""Return the list of subscriptions to the given service and node.