chainsyncer/chainsyncer/client/evm/response.py

53 lines
1.1 KiB
Python
Raw Normal View History

2021-02-03 21:57:26 +01:00
import json
2021-02-11 09:02:17 +01:00
from chainsyncer.client import translate
from chainsyncer.client.block import Block
from chainsyncer.client.tx import Tx
2021-02-03 20:55:39 +01:00
2021-02-03 21:57:26 +01:00
2021-02-03 20:55:39 +01:00
translations = {
2021-02-03 21:57:26 +01:00
'block_number': translate.hex_to_int,
'get_block': json.dumps,
2021-02-03 23:03:39 +01:00
'number': translate.hex_to_int,
2021-02-03 20:55:39 +01:00
}
class EVMResponse:
def __init__(self, item, response_object):
self.response_object = response_object
self.item = item
2021-02-03 21:57:26 +01:00
self.fn = translations[self.item]
2021-02-03 20:55:39 +01:00
def get_error(self):
return self.response_object.get('error')
def get_result(self):
2021-02-03 23:03:39 +01:00
r = self.fn(self.response_object.get('result'))
if r == 'null':
return None
return r
class EVMTx(Tx):
def __init__(self, block, tx_number, obj):
super(EVMTx, self).__init__(block, tx_number, obj)
class EVMBlock(Block):
def tx(self, idx):
o = self.obj['transactions'][idx]
return Tx(self, idx, o)
def number(self):
return translate.hex_to_int(self.obj['number'])
def __str__(self):
return str('block {} {}'.format(self.number(), self.hash))