Mercurial > libervia-backend
diff src/plugins/plugin_xep_0049.py @ 989:93359853e4bc
plugins XEP-0048, XEP-0049: feature is not checked anymore before using private XML storage, as feature announcement is not mandatory in XEP-0049
author | Goffi <goffi@goffi.org> |
---|---|
date | Thu, 10 Apr 2014 16:12:50 +0200 |
parents | f0bba18835ef |
children | 301b342c697a |
line wrap: on
line diff
--- a/src/plugins/plugin_xep_0049.py Tue Apr 08 09:50:45 2014 +0200 +++ b/src/plugins/plugin_xep_0049.py Thu Apr 10 16:12:50 2014 +0200 @@ -19,7 +19,6 @@ from sat.core.i18n import _ from logging import debug, info, error, warning -from twisted.internet import defer from wokkel import compat from twisted.words.xish import domish @@ -44,7 +43,6 @@ info(_("Plugin XEP-0049 initialization")) self.host = host - @defer.inlineCallbacks def privateXMLStore(self, element, profile_key): """Store private data @param element: domish.Element to store (must have a namespace) @@ -53,13 +51,12 @@ """ assert isinstance(element, domish.Element) client = self.host.getClient(profile_key) - yield self.host.checkFeature(XEP_0049.NS_PRIVATE, profile_key=client.profile) + # XXX: feature announcement in disco#info is not mandatory in XEP-0049, so we have to try to use private XML, and react according to the answer iq_elt = compat.IQ(client.xmlstream) query_elt = iq_elt.addElement('query', XEP_0049.NS_PRIVATE) query_elt.addChild(element) - yield iq_elt.send() + return iq_elt.send() - @defer.inlineCallbacks def privateXMLGet(self, node_name, namespace, profile_key): """Store private data @param node_name: name of the node to get @@ -69,11 +66,14 @@ """ client = self.host.getClient(profile_key) - yield self.host.checkFeature(XEP_0049.NS_PRIVATE, profile_key=client.profile) + # XXX: see privateXMLStore note about feature checking iq_elt = compat.IQ(client.xmlstream, 'get') query_elt = iq_elt.addElement('query', XEP_0049.NS_PRIVATE) query_elt.addElement(node_name, namespace) - answer_iq_elt = yield iq_elt.send() - answer_query_elt = answer_iq_elt.elements(XEP_0049.NS_PRIVATE, 'query').next() - defer.returnValue(answer_query_elt.firstChildElement()) + def getCb(answer_iq_elt): + answer_query_elt = answer_iq_elt.elements(XEP_0049.NS_PRIVATE, 'query').next() + return answer_query_elt.firstChildElement() + d = iq_elt.send() + d.addCallback(getCb) + return d