refactor i2pcontrol

This commit is contained in:
l-n-s
2017-08-08 06:11:11 -04:00
parent b946310ad9
commit 07627ea03c
2 changed files with 27 additions and 26 deletions

View File

@ -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()

View File

@ -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 {}