plugin XEP-0060: added psGet bridge method

This commit is contained in:
Goffi 2017-03-12 23:28:04 +01:00
commit 20ffb6d2eb
2 changed files with 13 additions and 1 deletions

View file

@ -62,7 +62,6 @@ Welcome!
class InvitationsPlugin(object):
# TODO: plugin unload
def __init__(self, host):
log.info(_(u"plugin Invitations initialization"))

View file

@ -85,6 +85,7 @@ class XEP_0060(object):
self._mam = host.plugins.get('XEP-0313')
self._node_cb = {} # dictionnary of callbacks for node (key: node, value: list of callbacks)
self.rt_sessions = sat_defer.RTDeferredSessions()
host.bridge.addMethod("psGet", ".plugin", in_sign='ssiassa{ss}s', out_sign='(asa{ss})', method=self._getItems, async=True)
host.bridge.addMethod("psDeleteNode", ".plugin", in_sign='sss', out_sign='', method=self._deleteNode, async=True)
host.bridge.addMethod("psRetractItem", ".plugin", in_sign='sssbs', out_sign='', method=self._retractItem, async=True)
host.bridge.addMethod("psRetractItems", ".plugin", in_sign='ssasbs', out_sign='', method=self._retractItems, async=True)
@ -266,6 +267,18 @@ class XEP_0060(object):
raise exceptions.DataError(u"Can't find Item in MAM message element")
return item_elt
def _getItems(self, service='', node='', max_items=10, item_ids=None, sub_id=None, extra_dict=None, profile_key=C.PROF_KEY_NONE):
"""Get items from pubsub node
@param max_items(int): maximum number of item to get, C.NO_LIMIT for no limit
"""
service = jid.JID(service) if service else None
max_items = None if max_items == C.NO_LIMIT else max_items
extra = self.parseExtra(extra_dict)
d = self.getItems(service, node or None, max_items or None, item_ids, sub_id or None, extra.rsm_request, extra.extra, profile_key)
d.addCallback(self.serItemsData)
return d
def getItems(self, service, node, max_items=None, item_ids=None, sub_id=None, rsm_request=None, extra=None, profile_key=C.PROF_KEY_NONE):
"""Retrieve pubsub items from a node.