diff src/plugins/plugin_xep_0060.py @ 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 442303b62a16
children 3c0bb714a80b
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 #