diff plugins/plugin_xep_0100.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 94011f553cd0
children fbae69247b15
line wrap: on
line diff
--- a/plugins/plugin_xep_0100.py	Mon Aug 09 22:06:56 2010 +0800
+++ b/plugins/plugin_xep_0100.py	Thu Aug 12 12:30:36 2010 +0800
@@ -44,7 +44,7 @@
         self.host = host
         self.__gateways = {}  #dict used to construct the answer to findGateways. Key = target jid
         host.bridge.addMethod("findGateways", ".communication", in_sign='ss', out_sign='s', method=self.findGateways)
-        host.bridge.addMethod("gatewayRegister", ".request", in_sign='ssa(ss)', out_sign='s', method=self.gatewayRegister)
+        host.bridge.addMethod("gatewayRegister", ".request", in_sign='ssa(ss)s', out_sign='s', method=self.gatewayRegister)
 
     def __inc_handled_items(self, request_id):
         self.__gateways[request_id]['__handled_items']+=1
@@ -97,17 +97,19 @@
         self.host.bridge.actionResult("ERROR", request_id, message_data)
 
 
-    def registrationSuccessful(self, target):
+    def registrationSuccessful(self, target, profile):
         """Called when in_band registration is ok, we must now follow the rest of procedure"""
         debug (_("Registration successful, doing the rest"))
-        self.host.addContact(target)
-        self.host.setPresence(target)
+        self.host.addContact(target, profile)
+        self.host.setPresence(target, profile)
     
-    def gatewayRegister(self, action, target, fields):
+    def gatewayRegister(self, action, target, fields, profile_key='@DEFAULT@'):
         """Register gateway using in-band registration, then log-in to gateway"""
+        profile = self.host.memory.getProfileName(profile_key)
+        assert(profile) #FIXME: return an error here
         if action == 'SUBMIT':
-            self.host.plugins["XEP_0077"].addTrigger(target, self.registrationSuccessful)
-        return self.host.plugins["XEP_0077"].in_band_submit(action, target, fields)
+            self.host.plugins["XEP_0077"].addTrigger(target, self.registrationSuccessful, profile)
+        return self.host.plugins["XEP_0077"].in_band_submit(action, target, fields, profile)
 
     def findGateways(self, target, profile_key='@DEFAULT@'):
         """Find gateways in the target JID, using discovery protocol