plugin XEP-0060: added purgeNode/psNodePurge method to remove all items from a node

This commit is contained in:
Goffi 2019-02-15 22:13:43 +01:00
commit fc3598e660

View file

@ -143,6 +143,14 @@ class XEP_0060(object):
method=self._setNodeSubscriptions,
async=True,
)
host.bridge.addMethod(
"psNodePurge",
".plugin",
in_sign="sss",
out_sign="",
method=self._purgeNode,
async=True,
)
host.bridge.addMethod(
"psNodeDelete",
".plugin",
@ -905,6 +913,15 @@ class XEP_0060(object):
d = request.send(client.xmlstream)
return d
def _purgeNode(self, service_s, nodeIdentifier, profile_key):
client = self.host.getClient(profile_key)
return self.purgeNode(
client, jid.JID(service_s) if service_s else None, nodeIdentifier
)
def purgeNode(self, client, service, nodeIdentifier):
return client.pubsub_client.purgeNode(service, nodeIdentifier)
def _deleteNode(self, service_s, nodeIdentifier, profile_key):
client = self.host.getClient(profile_key)
return self.deleteNode(
@ -1443,6 +1460,19 @@ class SatPubSubClient(rsm.PubSubClient):
return d.addCallback(cb)
def purgeNode(self, service, nodeIdentifier):
"""Purge a node (i.e. delete all items from it)
@param service(jid.JID, None): service to send the item to
None to use PEP
@param NodeIdentifier(unicode): PubSub node to use
"""
# TODO: propose this upstream and remove it once merged
request = pubsub.PubSubRequest('purge')
request.recipient = service
request.nodeIdentifier = nodeIdentifier
return request.send(self.xmlstream)
def getDiscoInfo(self, requestor, service, nodeIdentifier=""):
disco_info = []
self.host.trigger.point("PubSub Disco Info", disco_info, self.parent.profile)