60 lines
2.3 KiB
Python
60 lines
2.3 KiB
Python
from aiorpcx import RPCError
|
|
from functools import wraps
|
|
|
|
from torba.server.daemon import Daemon, DaemonError
|
|
|
|
|
|
def handles_errors(decorated_function):
|
|
@wraps(decorated_function)
|
|
async def wrapper(*args, **kwargs):
|
|
try:
|
|
return await decorated_function(*args, **kwargs)
|
|
except DaemonError as daemon_error:
|
|
raise RPCError(1, daemon_error.args[0])
|
|
return wrapper
|
|
|
|
|
|
class LBCDaemon(Daemon):
|
|
@handles_errors
|
|
async def getrawtransaction(self, hex_hash, verbose=False):
|
|
return await super().getrawtransaction(hex_hash=hex_hash, verbose=verbose)
|
|
|
|
@handles_errors
|
|
async def getclaimbyid(self, claim_id):
|
|
'''Given a claim id, retrieves claim information.'''
|
|
return await self._send_single('getclaimbyid', (claim_id,))
|
|
|
|
@handles_errors
|
|
async def getclaimsbyids(self, claim_ids):
|
|
'''Given a list of claim ids, batches calls to retrieve claim information.'''
|
|
return await self._send_vector('getclaimbyid', ((claim_id,) for claim_id in claim_ids))
|
|
|
|
@handles_errors
|
|
async def getclaimsforname(self, name):
|
|
'''Given a name, retrieves all claims matching that name.'''
|
|
return await self._send_single('getclaimsforname', (name,))
|
|
|
|
@handles_errors
|
|
async def getclaimsfortx(self, txid):
|
|
'''Given a txid, returns the claims it make.'''
|
|
return await self._send_single('getclaimsfortx', (txid,))
|
|
|
|
@handles_errors
|
|
async def getnameproof(self, name, block_hash=None):
|
|
'''Given a name and optional block_hash, returns a name proof and winner, if any.'''
|
|
return await self._send_single('getnameproof', (name, block_hash,) if block_hash else (name,))
|
|
|
|
@handles_errors
|
|
async def getvalueforname(self, name):
|
|
'''Given a name, returns the winning claim value.'''
|
|
return await self._send_single('getvalueforname', (name,))
|
|
|
|
@handles_errors
|
|
async def claimname(self, name, hexvalue, amount):
|
|
'''Claim a name, used for functional tests only.'''
|
|
return await self._send_single('claimname', (name, hexvalue, float(amount)))
|
|
|
|
@handles_errors
|
|
async def generate(self, number_of_blocks):
|
|
'''Generates regtest blocks, used for functional tests only.'''
|
|
return await self._send_single('generate', (int(number_of_blocks),))
|