X-Git-Url: http://git.maemo.org/git/?p=python-purple;a=blobdiff_plain;f=proxy.pyx;h=7deb3ac270b05a3c37746016420206815d90ad39;hp=b52a0c9e79c9d7cccfec4abd58dafc7dce74793a;hb=b6228086f86fb49fb290e50f7a143a687b7d3fff;hpb=7cb45fa563b2f0d0e9352373ab0e853188592dcf diff --git a/proxy.pyx b/proxy.pyx index b52a0c9..7deb3ac 100644 --- a/proxy.pyx +++ b/proxy.pyx @@ -17,49 +17,61 @@ # along with this program. If not, see . # -cimport proxy +cimport purple cdef class ProxyInfoType: - - cdef proxy.PurpleProxyType c_proxyinfotype + cdef proxy.PurpleProxyType c_type def __init__(self): - self.c_proxyinfotype = proxy.PURPLE_PROXY_NONE + self.c_type = proxy.PURPLE_PROXY_NONE + + def get_NONE(self): + self.c_type = proxy.PURPLE_PROXY_NONE + return self + NONE = property(get_NONE) - def USE_GLOBAL(self): - self.c_proxyinfotype = proxy.PURPLE_PROXY_USE_GLOBAL + def get_USE_GLOBAL(self): + self.c_type = proxy.PURPLE_PROXY_USE_GLOBAL return self + USE_GLOBAL = property(get_USE_GLOBAL) - def HTTP(self): - self.c_proxyinfotype = proxy.PURPLE_PROXY_HTTP + def get_HTTP(self): + self.c_type = proxy.PURPLE_PROXY_HTTP return self + HTTP = property(get_HTTP) - def SOCKS4(self): - self.c_proxyinfotype = proxy.PURPLE_PROXY_SOCKS4 + def get_SOCKS4(self): + self.c_type = proxy.PURPLE_PROXY_SOCKS4 return self - def SOCKS5(self): - self.c_proxyinfotype = proxy.PURPLE_PROXY_SOCKS5 + def get_SOCKS5(self): + self.c_type = proxy.PURPLE_PROXY_SOCKS5 return self - def USE_ENVVAR(self): - self.c_proxyinfotype = proxy.PURPLE_PROXY_USE_ENVVAR + def get_USE_ENVVAR (self): + self.c_type = proxy.PURPLE_PROXY_USE_ENVVAR return self + USE_ENVVAR = property(get_USE_ENVVAR) cdef class ProxyInfo: cdef proxy.PurpleProxyInfo *c_proxyinfo + cdef object types def __init__(self): self.c_proxyinfo = NULL - def cnew(self): - if self.c_proxyinfo == NULL: - self.c_proxyinfo = proxy.c_purple_proxy_info_new() + 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_proxyinfotype) + proxy.c_purple_proxy_info_set_type(self.c_proxyinfo, type.c_type) def set_host(self, char *host): if self.c_proxyinfo: @@ -77,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.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.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') 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