Convert DaemonError to RPCError
To cleanly return errors to clients getrawtransaction has the ugly API and still does its own thing Fixes #32
This commit is contained in:
parent
892a3de85b
commit
913d156786
@ -438,6 +438,13 @@ class Session(JSONRPC):
|
|||||||
def sub_count(self):
|
def sub_count(self):
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
async def daemon_request(self, method, *args):
|
||||||
|
'''Catch a DaemonError and convert it to an RPCError.'''
|
||||||
|
try:
|
||||||
|
return await getattr(self.daemon, method)(*args)
|
||||||
|
except DaemonError as e:
|
||||||
|
raise RPCError('daemon error: {}'.format(e))
|
||||||
|
|
||||||
def tx_hash_from_param(self, param):
|
def tx_hash_from_param(self, param):
|
||||||
'''Raise an RPCError if the parameter is not a valid transaction
|
'''Raise an RPCError if the parameter is not a valid transaction
|
||||||
hash.'''
|
hash.'''
|
||||||
@ -583,8 +590,8 @@ class ElectrumX(Session):
|
|||||||
|
|
||||||
async def tx_merkle(self, tx_hash, height):
|
async def tx_merkle(self, tx_hash, height):
|
||||||
'''tx_hash is a hex string.'''
|
'''tx_hash is a hex string.'''
|
||||||
hex_hashes = await self.daemon.block_hex_hashes(height, 1)
|
hex_hashes = await self.daemon_request('block_hex_hashes', height, 1)
|
||||||
block = await self.daemon.deserialised_block(hex_hashes[0])
|
block = await self.daemon_request('deserialised_block', hex_hashes[0])
|
||||||
tx_hashes = block['tx']
|
tx_hashes = block['tx']
|
||||||
try:
|
try:
|
||||||
pos = tx_hashes.index(tx_hash)
|
pos = tx_hashes.index(tx_hash)
|
||||||
@ -694,7 +701,7 @@ class ElectrumX(Session):
|
|||||||
return self.electrum_header(height)
|
return self.electrum_header(height)
|
||||||
|
|
||||||
async def estimatefee(self, params):
|
async def estimatefee(self, params):
|
||||||
return await self.daemon.estimatefee(params)
|
return await self.daemon_request('estimatefee', params)
|
||||||
|
|
||||||
async def headers_subscribe(self, params):
|
async def headers_subscribe(self, params):
|
||||||
self.require_empty_params(params)
|
self.require_empty_params(params)
|
||||||
@ -710,7 +717,7 @@ class ElectrumX(Session):
|
|||||||
'''The minimum fee a low-priority tx must pay in order to be accepted
|
'''The minimum fee a low-priority tx must pay in order to be accepted
|
||||||
to the daemon's memory pool.'''
|
to the daemon's memory pool.'''
|
||||||
self.require_empty_params(params)
|
self.require_empty_params(params)
|
||||||
return await self.daemon.relayfee()
|
return await self.daemon_request('relayfee')
|
||||||
|
|
||||||
async def transaction_broadcast(self, params):
|
async def transaction_broadcast(self, params):
|
||||||
'''Pass through the parameters to the daemon.
|
'''Pass through the parameters to the daemon.
|
||||||
@ -746,7 +753,7 @@ class ElectrumX(Session):
|
|||||||
# in anticipation it might be dropped in the future.
|
# in anticipation it might be dropped in the future.
|
||||||
if 1 <= len(params) <= 2:
|
if 1 <= len(params) <= 2:
|
||||||
tx_hash = self.tx_hash_from_param(params[0])
|
tx_hash = self.tx_hash_from_param(params[0])
|
||||||
return await self.daemon.getrawtransaction(tx_hash)
|
return await self.daemon_request('getrawtransaction', tx_hash)
|
||||||
|
|
||||||
raise self.RPCError('params wrong length: {}'.format(params))
|
raise self.RPCError('params wrong length: {}'.format(params))
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user