# HG changeset patch # User Goffi # Date 1489357684 -3600 # Node ID dd53d7a3219aebb2336554893f7cdd0a4b7259c6 # Parent e0f91efa404a7c85cc6330f612f5d005cd675613 plugin XEP-0060: added psGet bridge method diff -r e0f91efa404a -r dd53d7a3219a src/plugins/plugin_misc_invitations.py --- a/src/plugins/plugin_misc_invitations.py Sun Mar 12 19:35:36 2017 +0100 +++ b/src/plugins/plugin_misc_invitations.py Sun Mar 12 23:28:04 2017 +0100 @@ -62,7 +62,6 @@ class InvitationsPlugin(object): - # TODO: plugin unload def __init__(self, host): log.info(_(u"plugin Invitations initialization")) diff -r e0f91efa404a -r dd53d7a3219a src/plugins/plugin_xep_0060.py --- a/src/plugins/plugin_xep_0060.py Sun Mar 12 19:35:36 2017 +0100 +++ b/src/plugins/plugin_xep_0060.py Sun Mar 12 23:28:04 2017 +0100 @@ -85,6 +85,7 @@ 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 @@ 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.