Mercurial > libervia-backend
changeset 1829:6079752ffeae
plugin XEP-0060, XEP-0277: added getNodeURI method
author | Goffi <goffi@goffi.org> |
---|---|
date | Sat, 23 Jan 2016 19:53:16 +0100 |
parents | cb4be663a4a7 |
children | 74676624ad5d |
files | src/plugins/plugin_xep_0060.py src/plugins/plugin_xep_0277.py |
diffstat | 2 files changed, 19 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/plugin_xep_0060.py Fri Jan 22 21:06:41 2016 +0100 +++ b/src/plugins/plugin_xep_0060.py Sat Jan 23 19:53:16 2016 +0100 @@ -31,6 +31,7 @@ from wokkel import data_form from zope.interface import implements from collections import namedtuple +import urllib import datetime from dateutil import tz # XXX: tmp.wokkel.pubsub is actually use instead of wokkel version @@ -400,6 +401,23 @@ client = self.host.getClient(profile_key) return client.pubsub_client.subscriptions(service, nodeIdentifier) + ## misc tools ## + + def getNodeURI(self, service, node, item=None): + """Return XMPP URI of a PubSub node + + @param service(jid.JID, None): PubSub service, + @param node(unicode): node + @return (unicode): URI of the node + """ + query_data = [('node', node.encode('utf-8'))] + if item is not None: + query_data.append(('item', item.encode('utf-8'))) + return "xmpp:{service}?{query}".format( + service=service.userhost(), + query=urllib.urlencode(query_data) + ).decode('utf-8') + ## methods to manage several stanzas/jids at once ## # generic #
--- a/src/plugins/plugin_xep_0277.py Fri Jan 22 21:06:41 2016 +0100 +++ b/src/plugins/plugin_xep_0277.py Sat Jan 23 19:53:16 2016 +0100 @@ -533,10 +533,7 @@ if 'comments_node' in mb_data or 'comments_service' in mb_data: raise exceptions.DataError(u"You can't use comments_service/comments_node and comments at the same time") else: - mb_data['comments'] = u"xmpp:%(service)s?%(query)s" % { - 'service': comments_service.userhost(), - 'query': urllib.urlencode([('node', comments_node.encode('utf-8'))]) - } + mb_data['comments'] = self._p.getNodeURI(comments_service, comments_node) def _mbSend(self, service, node, data, profile_key): service = jid.JID(service) if service else None