comparison 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
comparison
equal deleted inserted replaced
943:71926ec2114d 944:e1842ebcb2f3
785 "File Transfer", profile_key=self.parent.profile) 785 "File Transfer", profile_key=self.parent.profile)
786 self.host.memory.setParam("Proxy port", streamhost_elt.getAttribute("port", ""), 786 self.host.memory.setParam("Proxy port", streamhost_elt.getAttribute("port", ""),
787 "File Transfer", profile_key=self.parent.profile) 787 "File Transfer", profile_key=self.parent.profile)
788 788
789 def connectionInitialized(self): 789 def connectionInitialized(self):
790 def after_init(ignore):
791 proxy_ent = self.host.memory.getServerServiceEntity("proxy", "bytestreams", profile=self.parent.profile)
792 if not proxy_ent:
793 debug(_("No proxy found on this server"))
794 return
795 iq_elt = jabber_client.IQ(self.parent.xmlstream, 'get')
796 iq_elt["to"] = proxy_ent.full()
797 iq_elt.addElement('query', NS_BS)
798 iq_elt.addCallback(self._proxyDataResult)
799 iq_elt.send()
800
801 self.xmlstream.addObserver(BS_REQUEST, self.plugin_parent.streamQuery, profile=self.parent.profile) 790 self.xmlstream.addObserver(BS_REQUEST, self.plugin_parent.streamQuery, profile=self.parent.profile)
802 proxy = self.host.memory.getParamA("Proxy", "File Transfer", profile_key=self.parent.profile) 791 proxy = self.host.memory.getParamA("Proxy", "File Transfer", profile_key=self.parent.profile)
803 if not proxy: 792 if not proxy:
804 self.parent.client_initialized.addCallback(after_init) 793 def proxiesFound(entities):
794 try:
795 proxy_ent = entities.pop()
796 except KeyError:
797 info(_("No proxy found on this server"))
798 return
799 iq_elt = jabber_client.IQ(self.parent.xmlstream, 'get')
800 iq_elt["to"] = proxy_ent.full()
801 iq_elt.addElement('query', NS_BS)
802 iq_elt.addCallback(self._proxyDataResult)
803 iq_elt.send()
804 d = self.host.findServiceEntities("proxy", "bytestreams", profile_key=self.parent.profile)
805 d.addCallback(proxiesFound)
806
805 807
806 def getDiscoInfo(self, requestor, target, nodeIdentifier=''): 808 def getDiscoInfo(self, requestor, target, nodeIdentifier=''):
807 return [disco.DiscoFeature(NS_BS)] 809 return [disco.DiscoFeature(NS_BS)]
808 810
809 def getDiscoItems(self, requestor, target, nodeIdentifier=''): 811 def getDiscoItems(self, requestor, target, nodeIdentifier=''):