def __init__(self, uri, encoder=None, decoder=None): self.__uri = uri if encoder is not None: self.__encoder = encoder else: from encoders import SafeEncoder self.__encoder = SafeEncoder() if decoder is not None: self.__decoder = decoder else: from decoders import SafeDecoder self.__decoder = SafeDecoder()
class ServiceProxy(object): def __init__(self, uri, encoder=None, decoder=None): self.__uri = uri if encoder is not None: self.__encoder = encoder else: from encoders import SafeEncoder self.__encoder = SafeEncoder() if decoder is not None: self.__decoder = decoder else: from decoders import SafeDecoder self.__decoder = SafeDecoder() def __request(self, methodname, params): data = self.__encoder.encode({ 'method': methodname, 'params': params, 'id':'jsonrpc' }) respdata = urlopen(self.__uri, data).read() response = self.__decoder.decode(respdata) if response['error'] != None: raise JSONRPCException(response['error']) return response['result'] def __repr__(self): return "<ServerProxy for %s>" % self.__uri __str__ = __repr__ def __getattr__(self, name): # magic method dispatcher return _Method(self.__request, name)