2024-01-03 10:24:52 +00:00
|
|
|
from jsonrpcclient import request, parse, Ok
|
|
|
|
import requests
|
|
|
|
|
|
|
|
|
|
|
|
class SimpleRpcProxy:
|
|
|
|
def __init__(self, url, timeout=60):
|
|
|
|
self.url = url
|
|
|
|
self.timeout = timeout
|
|
|
|
|
|
|
|
def __getattr__(self, name):
|
|
|
|
return RpcCaller(self.url, name, self.timeout)
|
|
|
|
|
|
|
|
|
|
|
|
class RpcCaller:
|
|
|
|
def __init__(self, url, method, timeout):
|
|
|
|
self.url = url
|
|
|
|
self.method = method
|
|
|
|
self.timeout = timeout
|
|
|
|
|
|
|
|
def __call__(self, *args, **argsn):
|
|
|
|
r = request(self.method, *args)
|
|
|
|
try:
|
|
|
|
response = requests.post(self.url, json=r, timeout=self.timeout)
|
|
|
|
parsed = parse(response.json())
|
|
|
|
if isinstance(parsed, Ok):
|
|
|
|
return parsed.result
|
|
|
|
else:
|
2024-08-06 07:06:15 +00:00
|
|
|
print("Failed to call RPC, method = %s(%s), error = %s" % (self.method, str(*args)[-1500:], parsed))
|
2024-01-03 10:24:52 +00:00
|
|
|
except Exception as ex:
|
2024-08-06 07:06:15 +00:00
|
|
|
print("Failed to call RPC, method = %s(%s), exception = %s" % (self.method, str(*args)[-1500:], ex))
|
2024-01-03 10:24:52 +00:00
|
|
|
return None
|