Adding new functions to get protocol's default options
[python-purple] / proxy.pyx
index 2948e15..7deb3ac 100644 (file)
--- a/proxy.pyx
+++ b/proxy.pyx
@@ -95,35 +95,41 @@ cdef class ProxyInfo:
     def set_info(self, acc, info):
         ''' @param acc Tuple (username, protocol id) '''
         ''' @param info Dictionary {'type': "HTTP", 'port': "1234", '''
     def set_info(self, acc, info):
         ''' @param acc Tuple (username, protocol id) '''
         ''' @param info Dictionary {'type': "HTTP", 'port': "1234", '''
-        '''                'username': "foo", 'passworld': "foo123"} '''
+        '''   'host': "1.2.3.4", 'username': "foo", 'passworld': "foo123"} '''
 
         cdef account.PurpleAccount *c_account
         cdef proxy.PurpleProxyInfo *c_proxyinfo
 
         cdef account.PurpleAccount *c_account
         cdef proxy.PurpleProxyInfo *c_proxyinfo
-        c_account = account.c_purple_accounts_find(acc[0], acc[1])
+        c_account = account.purple_accounts_find(acc[0], acc[1])
 
         if c_account == NULL:
             #FIXME: Message error or call a callback handle to error
             return False
 
 
         if c_account == NULL:
             #FIXME: Message error or call a callback handle to error
             return False
 
-        c_proxyinfo = account.c_purple_account_get_proxy_info(c_account)
+        c_proxyinfo = account.purple_account_get_proxy_info(c_account)
+        if c_proxyinfo == NULL:
+                c_proxyinfo = proxy.c_purple_proxy_info_new()
+                account.purple_account_set_proxy_info(c_account, c_proxyinfo)
 
 
-        if info.has_key('type'):
+        if info.has_key('type') and info['type']:
             type = info['type']
             if not type in self.types.keys():
             type = info['type']
             if not type in self.types.keys():
-                #FIXME: Message error or call a callback handle to error
-                return False
+                type = 'HTTP'
             proxy.c_purple_proxy_info_set_type(c_proxyinfo, self.types[type])
 
             proxy.c_purple_proxy_info_set_type(c_proxyinfo, self.types[type])
 
-        if info.has_key('port'):
+        if info.has_key('host') and info['host']:
+            host = info['host']
+            proxy.c_purple_proxy_info_set_host(c_proxyinfo, host)
+
+        if info.has_key('port') and info['port']:
             port = int(info['port'])
             proxy.c_purple_proxy_info_set_port(c_proxyinfo, port)
 
             port = int(info['port'])
             proxy.c_purple_proxy_info_set_port(c_proxyinfo, port)
 
-        if info.has_key('username'):
+        if info.has_key('username') and info['username']:
             username = info['username']
             proxy.c_purple_proxy_info_set_username(c_proxyinfo, username)
 
             username = info['username']
             proxy.c_purple_proxy_info_set_username(c_proxyinfo, username)
 
-        if info.has_key('password'):
+        if info.has_key('password') and info['password']:
             password = info['password']
             proxy.c_purple_proxy_info_set_password(c_proxyinfo, password)
             password = info['password']
             proxy.c_purple_proxy_info_set_password(c_proxyinfo, password)
-           
+
         return True
         return True