X-Git-Url: http://git.maemo.org/git/?p=python-purple;a=blobdiff_plain;f=proxy.pyx;h=cb248230666527804a1eff14cfd6aba25dec038b;hp=54fca864bcbf3f9d11c904d697f312bcb9b51d12;hb=e0793149ffd4ba0271c21a63795f510cacb0730d;hpb=23bbccf4aeb7b092ae26a90f05c1ced78b512295 diff --git a/proxy.pyx b/proxy.pyx index 54fca86..cb24823 100644 --- a/proxy.pyx +++ b/proxy.pyx @@ -56,10 +56,19 @@ cdef class ProxyInfoType: cdef class ProxyInfo: cdef proxy.PurpleProxyInfo *c_proxyinfo + cdef object types def __init__(self): self.c_proxyinfo = NULL + self.types = {"HTTP": proxy.PURPLE_PROXY_HTTP, + "USER_GLOBAL": proxy.PURPLE_PROXY_USE_GLOBAL, + "USE_ENVVAR": proxy.PURPLE_PROXY_USE_ENVVAR, + "SOCKS4": proxy.PURPLE_PROXY_SOCKS4, + "SOCKS5": proxy.PURPLE_PROXY_SOCKS5, + "NONE": proxy.PURPLE_PROXY_NONE} + + def set_type(self, ProxyInfoType type): if self.c_proxyinfo: proxy.c_purple_proxy_info_set_type(self.c_proxyinfo, type.c_type) @@ -80,3 +89,47 @@ cdef class ProxyInfo: if self.c_proxyinfo: proxy.c_purple_proxy_info_set_password(self.c_proxyinfo, password) + def get_types(self): + return self.types.keys() + + def set_info(self, acc, info): + ''' @param acc Tuple (username, protocol id) ''' + ''' @param info Dictionary {'type': "HTTP", 'port': "1234", ''' + ''' 'host': "1.2.3.4", 'username': "foo", 'passworld': "foo123"} ''' + + cdef account.PurpleAccount *c_account + cdef proxy.PurpleProxyInfo *c_proxyinfo + c_account = account.c_purple_accounts_find(acc[0], acc[1]) + + 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) + if c_proxyinfo == NULL: + c_proxyinfo = proxy.c_purple_proxy_info_new() + account.c_purple_account_set_proxy_info(c_account, c_proxyinfo) + + if info.has_key('type') and info['type']: + type = info['type'] + if not type in self.types.keys(): + type = 'HTTP' + proxy.c_purple_proxy_info_set_type(c_proxyinfo, self.types[type]) + + 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) + + if info.has_key('username') and info['username']: + username = info['username'] + proxy.c_purple_proxy_info_set_username(c_proxyinfo, username) + + if info.has_key('password') and info['password']: + password = info['password'] + proxy.c_purple_proxy_info_set_password(c_proxyinfo, password) + + return True