refactor i2pcontrol
This commit is contained in:
@ -35,20 +35,29 @@ STATUS = [
|
||||
"ERROR_UDP_DISABLED_AND_TCP_UNSET",
|
||||
]
|
||||
|
||||
def get_token(url, password='itoopie'):
|
||||
"""Get I2PControl token"""
|
||||
return requests.post(
|
||||
url,
|
||||
json.dumps({'id': 1, 'method': 'Authenticate',
|
||||
'params': {'API': 1, 'Password': 'itoopie'}, 'jsonrpc': '2.0'}),
|
||||
verify=False).json()["result"]["Token"]
|
||||
class I2PControl(object):
|
||||
|
||||
def request(url, token, method, params):
|
||||
"""Execute authenticated I2PControl request"""
|
||||
return requests.post(
|
||||
url,
|
||||
json.dumps({'id': 1, 'method': method, 'params': params,
|
||||
'jsonrpc': '2.0', 'Token': token}),
|
||||
verify=False
|
||||
).json()
|
||||
def __init__(self, url, password='itoopie'):
|
||||
self.url = url
|
||||
self.password = password
|
||||
self._token = None
|
||||
|
||||
@property
|
||||
def token(self):
|
||||
"""Cached authentication token"""
|
||||
if not self._token:
|
||||
self._token = requests.post(self.url,
|
||||
json.dumps({'id': 1, 'method': 'Authenticate',
|
||||
'params': {'API': 1, 'Password': self.password},
|
||||
'jsonrpc': '2.0'}),
|
||||
verify=False).json()["result"]["Token"]
|
||||
return self._token
|
||||
|
||||
def request(self, method, params):
|
||||
"""Execute authenticated request"""
|
||||
return requests.post(self.url,
|
||||
json.dumps({'id': 1, 'method': method, 'params': params,
|
||||
'jsonrpc': '2.0', 'Token': self.token}),
|
||||
verify=False
|
||||
).json()
|
||||
|
||||
|
@ -31,21 +31,13 @@ class I2pd(object):
|
||||
'Socks': "{}:4447".format(self.ip),
|
||||
},
|
||||
}
|
||||
self._ctl_token = None
|
||||
|
||||
@property
|
||||
def ctl_token(self):
|
||||
"""Cached i2pcontrol authentication token"""
|
||||
if not self._ctl_token:
|
||||
self._ctl_token = i2pcontrol.get_token(self.URLS['Control'])
|
||||
return self._ctl_token
|
||||
|
||||
self.control = i2pcontrol.I2PControl(self.URLS['Control'])
|
||||
|
||||
def info(self):
|
||||
"""Fetch info from i2pcontrol"""
|
||||
try:
|
||||
return i2pcontrol.request(self.URLS['Control'], self.ctl_token,
|
||||
"RouterInfo", i2pcontrol.INFO_REQUEST)['result']
|
||||
return self.control.request("RouterInfo",
|
||||
i2pcontrol.INFO_REQUEST)['result']
|
||||
except requests.exceptions.ConnectionError:
|
||||
return {}
|
||||
|
||||
|
Reference in New Issue
Block a user