Source code for bitsharesapi.bitsharesnoderpc

# -*- coding: utf-8 -*-
import re

from bitsharesbase.chains import known_chains
from grapheneapi.api import Api as Original_Api

from . import exceptions


[docs]class Api(Original_Api):
[docs] def post_process_exception(self, e): msg = exceptions.decodeRPCErrorMsg(e).strip() if msg == "missing required active authority": raise exceptions.MissingRequiredActiveAuthority elif re.match( "current_account_itr == acnt_indx.indices().get<by_name>().end()", msg ): raise exceptions.AccountCouldntBeFoundException(msg) elif re.match("Assert Exception: is_valid_name( name )", msg): raise exceptions.InvalidAccountNameException(msg) elif re.match("^no method with name.*", msg): raise exceptions.NoMethodWithName(msg) elif msg: raise exceptions.UnhandledRPCError(msg) else: raise e
[docs]class BitSharesNodeRPC(Api):
[docs] def get_network(self): """ Identify the connected network. This call returns a dictionary with keys chain_id, core_symbol and prefix """ props = self.get_chain_properties() chain_id = props["chain_id"] for _, v in known_chains.items(): if v["chain_id"] == chain_id: return v raise exceptions.UnknownNetworkException( "Connecting to unknown network (chain_id: {})!".format(props["chain_id"]) )
[docs] def get_account(self, name, **kwargs): """ Get full account details from account name or id. :param str name: Account name or account id """ if len(name.split(".")) == 3: return self.get_objects([name])[0] else: return self.get_account_by_name(name, **kwargs)
[docs] def get_asset(self, name, **kwargs): """ Get full asset from name of id. :param str name: Symbol name or asset id (e.g. 1.3.0) """ if len(name.split(".")) == 3: return self.get_objects([name], **kwargs)[0] else: return self.lookup_asset_symbols([name], **kwargs)[0]
[docs] def get_object(self, o, **kwargs): """ Get object with id ``o`` :param str o: Full object id """ return self.get_objects([o], **kwargs)[0]