comparison plugins/plugin_xep_0077.py @ 169:06985b6ad23a

SàT: plugin 0077 & 0100: fixed profile management
author Goffi <goffi@goffi.org>
date Thu, 12 Aug 2010 12:30:36 +0800
parents 6be927a465ed
children
comparison
equal deleted inserted replaced
168:a2655a0a4eac 169:06985b6ad23a
48 self.host = host 48 self.host = host
49 self.triggers = {} #used by other protocol (e.g. XEP-0100) to finish registration. key = target_jid 49 self.triggers = {} #used by other protocol (e.g. XEP-0100) to finish registration. key = target_jid
50 host.bridge.addMethod("in_band_register", ".communication", in_sign='ss', out_sign='s', method=self.in_band_register) 50 host.bridge.addMethod("in_band_register", ".communication", in_sign='ss', out_sign='s', method=self.in_band_register)
51 host.bridge.addMethod("in_band_submit", ".request", in_sign='sa(ss)', out_sign='s', method=self.in_band_submit) 51 host.bridge.addMethod("in_band_submit", ".request", in_sign='sa(ss)', out_sign='s', method=self.in_band_submit)
52 52
53 def addTrigger(self, target, cb): 53 def addTrigger(self, target, cb, profile):
54 """Add a callback which is called when registration to target is successful""" 54 """Add a callback which is called when registration to target is successful"""
55 self.triggers[target] = cb 55 self.triggers[target] = (cb, profile)
56 56
57 def reg_ok(self, answer): 57 def reg_ok(self, answer):
58 """Called after the first get IQ""" 58 """Called after the first get IQ"""
59 try: 59 try:
60 x_elem = filter (lambda x:x.name == "x", answer.firstChildElement().elements())[0] #We only want the "x" element (data form) 60 x_elem = filter (lambda x:x.name == "x", answer.firstChildElement().elements())[0] #We only want the "x" element (data form)
97 debug (_("registration answer: %s") % answer.toXml()) 97 debug (_("registration answer: %s") % answer.toXml())
98 answer_type = "SUCCESS" 98 answer_type = "SUCCESS"
99 answer_data={"message":_("Registration successfull")} 99 answer_data={"message":_("Registration successfull")}
100 self.host.bridge.actionResult(answer_type, answer['id'], answer_data) 100 self.host.bridge.actionResult(answer_type, answer['id'], answer_data)
101 if self.triggers.has_key(answer["from"]): 101 if self.triggers.has_key(answer["from"]):
102 self.triggers[answer["from"]](answer["from"]) 102 callback,profile = self.triggers[answer["from"]]
103 callback(answer["from"], profile)
103 del self.triggers[answer["from"]] 104 del self.triggers[answer["from"]]
104 105
105 def registrationFailure(self, failure): 106 def registrationFailure(self, failure):
106 info (_("Registration failure: %s") % str(failure.value)) 107 info (_("Registration failure: %s") % str(failure.value))
107 print failure.value.stanza.toXml() 108 print failure.value.stanza.toXml()
115 answer_data={"message":_("Registration failed")} 116 answer_data={"message":_("Registration failed")}
116 self.host.bridge.actionResult(answer_type, failure.value.stanza['id'], answer_data) 117 self.host.bridge.actionResult(answer_type, failure.value.stanza['id'], answer_data)
117 if self.triggers.has_key(answer["from"]): 118 if self.triggers.has_key(answer["from"]):
118 del self.triggers[answer["from"]] 119 del self.triggers[answer["from"]]
119 120
120 def in_band_submit(self, action, target, fields): 121 def in_band_submit(self, action, target, fields, profile):
121 """Submit a form for registration, using data_form""" 122 """Submit a form for registration, using data_form"""
122 id, deferred = self.host.submitForm(action, target, fields) 123 id, deferred = self.host.submitForm(action, target, fields, profile)
123 if action == 'CANCEL': 124 if action == 'CANCEL':
124 deferred.addCallbacks(self.unregistrationAnswer, self.unregistrationFailure) 125 deferred.addCallbacks(self.unregistrationAnswer, self.unregistrationFailure)
125 else: 126 else:
126 deferred.addCallbacks(self.registrationAnswer, self.registrationFailure) 127 deferred.addCallbacks(self.registrationAnswer, self.registrationFailure)
127 return id 128 return id