comparison src/plugins/plugin_xep_0033.py @ 2148:a543eda2c923

core (memory/disco): getInfos now handle node + use client instead of profile in many methods
author Goffi <goffi@goffi.org>
date Sun, 12 Feb 2017 20:43:20 +0100
parents 33c8c4973743
children 6a004a22dd9e
comparison
equal deleted inserted replaced
2147:bca699faf416 2148:a543eda2c923
99 element.addChild(domish.Element((None, 'address'), None, {'type': type_, 'jid': jid_})) 99 element.addChild(domish.Element((None, 'address'), None, {'type': type_, 'jid': jid_}))
100 # when the prosody plugin is completed, we can immediately return mess_data from here 100 # when the prosody plugin is completed, we can immediately return mess_data from here
101 self.sendAndStoreMessage(mess_data, entries, profile) 101 self.sendAndStoreMessage(mess_data, entries, profile)
102 log.debug("XEP-0033 took over") 102 log.debug("XEP-0033 took over")
103 raise failure.Failure(exceptions.CancelError(u'Cancelled by XEP-0033')) 103 raise failure.Failure(exceptions.CancelError(u'Cancelled by XEP-0033'))
104 d = self.host.findFeaturesSet([NS_ADDRESS], profile=profile) 104 d = self.host.findFeaturesSet(client, [NS_ADDRESS])
105 d.addCallbacks(discoCallback, lambda dummy: discoCallback(None)) 105 d.addCallbacks(discoCallback, lambda dummy: discoCallback(None))
106 return d 106 return d
107 107
108 post_xml_treatments.addCallback(treatment) 108 post_xml_treatments.addCallback(treatment)
109 return True 109 return True
119 Ideas: 119 Ideas:
120 - fix Prosody plugin to check if target server support the feature 120 - fix Prosody plugin to check if target server support the feature
121 - redesign the database to save only one entry to the database 121 - redesign the database to save only one entry to the database
122 - change the messageNew signal to eventually pass more than one recipient 122 - change the messageNew signal to eventually pass more than one recipient
123 """ 123 """
124 client = self.host.getClient(profile)
124 def send(mess_data, skip_send=False): 125 def send(mess_data, skip_send=False):
125 client = self.host.profiles[profile]
126 d = defer.Deferred() 126 d = defer.Deferred()
127 if not skip_send: 127 if not skip_send:
128 d.addCallback(client.sendMessageData) 128 d.addCallback(client.sendMessageData)
129 d.addCallback(self.host.messageAddToHistory, client) 129 d.addCallback(self.host.messageAddToHistory, client)
130 d.addCallback(self.host.sendMessageToBridge, client) 130 d.addCallback(self.host.sendMessageToBridge, client)
154 timestamp = time() 154 timestamp = time()
155 self.internal_data[timestamp] = [] 155 self.internal_data[timestamp] = []
156 defer_list = [] 156 defer_list = []
157 for type_, jid_ in entries: 157 for type_, jid_ in entries:
158 d = defer.Deferred() 158 d = defer.Deferred()
159 d.addCallback(self.host.findFeaturesSet, jid_=JID(JID(jid_).host), profile=profile) 159 d.addCallback(self.host.findFeaturesSet, client=client, jid_=JID(JID(jid_).host))
160 d.addCallbacks(discoCallback, errback, callbackArgs=[jid_], errbackArgs=[jid_]) 160 d.addCallbacks(discoCallback, errback, callbackArgs=[jid_], errbackArgs=[jid_])
161 d.callback([NS_ADDRESS]) 161 d.callback([NS_ADDRESS])
162 defer_list.append(d) 162 defer_list.append(d)
163 d = defer.Deferred().addCallback(lambda dummy: self.internal_data.pop(timestamp)) 163 d = defer.Deferred().addCallback(lambda dummy: self.internal_data.pop(timestamp))
164 defer.DeferredList(defer_list).chainDeferred(d) 164 defer.DeferredList(defer_list).chainDeferred(d)