Mercurial > libervia-backend
diff src/plugins/plugin_xep_0065.py @ 944:e1842ebcb2f3
core, plugin XEP-0115: discovery refactoring:
- hashing algorithm of XEP-0115 has been including in core
- our own hash is still calculated by XEP-0115 and can be regenerated with XEP_0115.recalculateHash
- old discovery methods have been removed. Now the following methods are used:
- hasFeature: tell if a feature is available for an entity
- getDiscoInfos: self explaining
- getDiscoItems: self explaining
- findServiceEntities: return all available items of an entity which given (category, type)
- findFeaturesSet: search for a set of features in entity + entity's items
all these methods are asynchronous, and manage cache automatically
- XEP-0115 manage in a better way hashes, and now use a trigger for presence instead of monkey patch
- new FeatureNotFound exception, when we want to do something which is not available
- refactored client initialisation sequence, removed client.initialized Deferred
- added constant APP_URL
- test_plugin_xep_0033.py has been temporarly deactivated, the time to adapt it
- lot of cleaning
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 28 Mar 2014 18:07:22 +0100 |
parents | c6d8fc63b1db |
children | 132de9d487ac |
line wrap: on
line diff
--- a/src/plugins/plugin_xep_0065.py Fri Mar 28 18:07:17 2014 +0100 +++ b/src/plugins/plugin_xep_0065.py Fri Mar 28 18:07:22 2014 +0100 @@ -787,21 +787,23 @@ "File Transfer", profile_key=self.parent.profile) def connectionInitialized(self): - def after_init(ignore): - proxy_ent = self.host.memory.getServerServiceEntity("proxy", "bytestreams", profile=self.parent.profile) - if not proxy_ent: - debug(_("No proxy found on this server")) - return - iq_elt = jabber_client.IQ(self.parent.xmlstream, 'get') - iq_elt["to"] = proxy_ent.full() - iq_elt.addElement('query', NS_BS) - iq_elt.addCallback(self._proxyDataResult) - iq_elt.send() - self.xmlstream.addObserver(BS_REQUEST, self.plugin_parent.streamQuery, profile=self.parent.profile) proxy = self.host.memory.getParamA("Proxy", "File Transfer", profile_key=self.parent.profile) if not proxy: - self.parent.client_initialized.addCallback(after_init) + def proxiesFound(entities): + try: + proxy_ent = entities.pop() + except KeyError: + info(_("No proxy found on this server")) + return + iq_elt = jabber_client.IQ(self.parent.xmlstream, 'get') + iq_elt["to"] = proxy_ent.full() + iq_elt.addElement('query', NS_BS) + iq_elt.addCallback(self._proxyDataResult) + iq_elt.send() + d = self.host.findServiceEntities("proxy", "bytestreams", profile_key=self.parent.profile) + d.addCallback(proxiesFound) + def getDiscoInfo(self, requestor, target, nodeIdentifier=''): return [disco.DiscoFeature(NS_BS)]