74 lines
2.1 KiB
Python
74 lines
2.1 KiB
Python
|
import requests
|
||
|
|
||
|
from .exceptions import RequestFailedException
|
||
|
|
||
|
|
||
|
class ChildChainService(object):
|
||
|
def __init__(self, base_url, verify=False, timeout=5):
|
||
|
self.base_url = base_url
|
||
|
self.verify = verify
|
||
|
self.timeout = timeout
|
||
|
|
||
|
def request(self, end_point, method, params=None, data=None, headers=None):
|
||
|
url = self.base_url + end_point
|
||
|
|
||
|
response = requests.request(
|
||
|
method=method,
|
||
|
url=url,
|
||
|
params=params,
|
||
|
data=data,
|
||
|
headers=headers,
|
||
|
verify=self.verify,
|
||
|
timeout=self.timeout,
|
||
|
)
|
||
|
|
||
|
if response.ok:
|
||
|
return response
|
||
|
else:
|
||
|
raise RequestFailedException(
|
||
|
'failed with response: {}'.format(response)
|
||
|
)
|
||
|
|
||
|
def get_current_block(self):
|
||
|
end_point = '/block'
|
||
|
response = self.request(end_point, 'GET')
|
||
|
return response.text
|
||
|
|
||
|
def get_block_number(self):
|
||
|
end_point = '/blocknumber'
|
||
|
response = self.request(end_point, 'GET')
|
||
|
return int(response.text)
|
||
|
|
||
|
def get_block(self, blknum):
|
||
|
end_point = '/block/{}'.format(blknum)
|
||
|
response = self.request(end_point, 'GET')
|
||
|
return response.text
|
||
|
|
||
|
def get_proof(self, blknum, slot):
|
||
|
end_point = '/proof'
|
||
|
params = {'blknum': blknum, 'slot': slot}
|
||
|
response = self.request(end_point, 'GET', params=params)
|
||
|
return response.text
|
||
|
|
||
|
def get_tx_and_proof(self, blknum, slot):
|
||
|
end_point = '/tx_proof'
|
||
|
params = {'blknum': blknum, 'slot': slot}
|
||
|
response = self.request(end_point, 'GET', params=params)
|
||
|
return response.text
|
||
|
|
||
|
def get_tx(self, blknum, slot):
|
||
|
end_point = '/tx'
|
||
|
params = {'blknum': blknum, 'slot': slot}
|
||
|
response = self.request(end_point, 'GET', params=params)
|
||
|
return response.text
|
||
|
|
||
|
def submit_block(self):
|
||
|
end_point = '/submit_block'
|
||
|
response = self.request(end_point, 'POST')
|
||
|
return int(response.text)
|
||
|
|
||
|
def send_transaction(self, tx):
|
||
|
end_point = '/send_tx'
|
||
|
data = {'tx': tx}
|
||
|
self.request(end_point, 'POST', data=data)
|