# HG changeset patch # User Goffi # Date 1453575196 -3600 # Node ID 6079752ffeaeb4ab51372e5c6ab92cd8a3bf4af6 # Parent cb4be663a4a739df34802f399055a6ad3fb36576 plugin XEP-0060, XEP-0277: added getNodeURI method diff -r cb4be663a4a7 -r 6079752ffeae src/plugins/plugin_xep_0060.py --- 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 # diff -r cb4be663a4a7 -r 6079752ffeae src/plugins/plugin_xep_0277.py --- 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