diff sat/plugins/plugin_xep_0060.py @ 3587:2715da5b2aa7

plugin XEP-0060: handle purge notifications
author Goffi <goffi@goffi.org>
date Thu, 29 Jul 2021 15:54:54 +0200
parents 5f65f4e9f8cb
children 2c7a52a62be3
line wrap: on
line diff
--- a/sat/plugins/plugin_xep_0060.py	Wed Jul 28 23:01:15 2021 +0200
+++ b/sat/plugins/plugin_xep_0060.py	Thu Jul 29 15:54:54 2021 +0200
@@ -1529,6 +1529,19 @@
                 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.