changeset 1551:591c32dbfb0b

core (client): add IQ method to easily create an IQ stanza with the current xmlstream, and manage result with a Deferred.
author Goffi <goffi@goffi.org>
date Mon, 02 Nov 2015 22:02:41 +0100
parents 465d4d484e7c
children e0bde0d0b321
files src/core/xmpp.py
diffstat 1 files changed, 12 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/core/xmpp.py	Mon Nov 02 22:02:41 2015 +0100
+++ b/src/core/xmpp.py	Mon Nov 02 22:02:41 2015 +0100
@@ -21,7 +21,7 @@
 from sat.core.constants import Const as C
 from twisted.internet import task, defer
 from twisted.words.protocols.jabber import jid, xmlstream
-from wokkel import client, disco, xmppim, generic, compat, delay, iwokkel
+from wokkel import client, disco, xmppim, generic, delay, iwokkel
 from sat.core.log import getLogger
 log = getLogger(__name__)
 from sat.core import exceptions
@@ -52,6 +52,16 @@
         """Return a deferred which fire when the client is connected"""
         return self.conn_deferred
 
+    def IQ(self, type_=u'set', timeout=None):
+        """shortcut to create an IQ element managing deferred
+
+        @param type_(unicode): IQ type ('set' or 'get')
+        @param timeout(None, int): timeout in seconds
+        """
+        iq_elt = xmlstream.IQ(self.xmlstream, type_)
+        iq_elt.timeout = timeout
+        return iq_elt
+
     def _authd(self, xmlstream):
         if not self.host_app.trigger.point("XML Initialized", xmlstream, self.profile):
             return
@@ -485,7 +495,7 @@
         self.xmlstream.namespace = "jabber:client"
         self.xmlstream.sendHeader()
 
-        iq = compat.IQ(self.xmlstream, 'set')
+        iq = xmlstream.IQ(self.xmlstream, 'set')
         iq["to"] = self.jabber_host
         query = iq.addElement(('jabber:iq:register', 'query'))
         _user = query.addElement('username')