plugin XEP-0060: added purgeNode/psNodePurge method to remove all items from a node
This commit is contained in:
parent
d1e3821e5a
commit
fc3598e660
1 changed files with 30 additions and 0 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue