Mercurial > libervia-backend
diff src/plugins/plugin_xep_0060.py @ 301:e33b3a777f10
plugin xep-0060: added getEntry method
author | Goffi <goffi@goffi.org> |
---|---|
date | Mon, 21 Feb 2011 01:36:52 +0100 |
parents | 7c79d4a8c9e6 |
children | 2b52a5da0978 |
line wrap: on
line diff
--- a/src/plugins/plugin_xep_0060.py Mon Feb 21 01:35:39 2011 +0100 +++ b/src/plugins/plugin_xep_0060.py Mon Feb 21 01:36:52 2011 +0100 @@ -47,6 +47,17 @@ self.host = host self.managedNodes=[] self.clients={} + """host.bridge.addMethod("getItems", ".communication", in_sign='ssa{ss}s', out_sign='as', method=self.getItems, + async = True, + doc = { 'summary':'retrieve items', + 'param_0':'service: pubsub service', + 'param_1':'node: node identifier', + 'param_2':'\n'.join(['options: can be:', + '- max_items: see XEP-0060 #6.5.7', + '- sub_id: subscription identifier, see XEP-0060 #7.2.2.2']), + 'param_3':'%(doc_profile)s', + 'return':'array of raw XML (content of the items)' + })""" def getHandler(self, profile): self.clients[profile] = SatPubSubClient(self.host, self) @@ -73,7 +84,20 @@ raise Exception(err_mess) client.publish(service, nodeIdentifier, items, client.parent.jid) - + def getItems(self, service, node, max_items=None, sub_id=None, profile_key='@DEFAULT@'): + profile = self.host.memory.getProfileName(profile_key) + if not profile: + err_mess = _('Trying to get items with an unknown profile key [%s]') % profile_key + error(err_mess) + raise Exception(err_mess) + try: + client = self.clients[profile] + except KeyError: + err_mess = _('INTERNAL ERROR: no handler for required profile') + error(err_mess) + raise Exception(err_mess) + return client.items(service, node, max_items, sub_id, client.parent.jid) + class SatPubSubClient(pubsub.PubSubClient): implements(disco.IDisco)