kopia lustrzana https://github.com/bugout-dev/moonstream
Metatx requesters fetch from resources for list contracts handler
rodzic
97c283a2cd
commit
68251d822d
|
@ -78,6 +78,12 @@ class CallRequestIdDuplicates(Exception):
|
|||
"""
|
||||
|
||||
|
||||
class MetatxRequestersNotFound(Exception):
|
||||
"""
|
||||
Raised when metatx requesters is not found in Brood resources.
|
||||
"""
|
||||
|
||||
|
||||
def parse_registered_contract_response(
|
||||
obj: Tuple[RegisteredContract, Blockchain]
|
||||
) -> data.RegisteredContractResponse:
|
||||
|
@ -274,7 +280,7 @@ def get_registered_contract(
|
|||
|
||||
def lookup_registered_contracts(
|
||||
db_session: Session,
|
||||
metatx_requester_id: uuid.UUID,
|
||||
metatx_requester_ids: List[uuid.UUID],
|
||||
blockchain: Optional[str] = None,
|
||||
address: Optional[str] = None,
|
||||
limit: int = 10,
|
||||
|
@ -286,7 +292,7 @@ def lookup_registered_contracts(
|
|||
query = (
|
||||
db_session.query(RegisteredContract, Blockchain)
|
||||
.join(Blockchain, Blockchain.id == RegisteredContract.blockchain_id)
|
||||
.filter(RegisteredContract.metatx_requester_id == metatx_requester_id)
|
||||
.filter(RegisteredContract.metatx_requester_id.in_(metatx_requester_ids))
|
||||
)
|
||||
|
||||
if blockchain is not None:
|
||||
|
@ -661,11 +667,23 @@ def complete_call_request(
|
|||
return (call_request, registered_contract)
|
||||
|
||||
|
||||
def fetch_metatx_requester_ids(token):
|
||||
def fetch_metatx_requester_ids(token: uuid.UUID) -> List[uuid.UUID]:
|
||||
params = {"type": "metatx_requester"}
|
||||
resources = bugout_client.list_resources(token=token, params=params)
|
||||
|
||||
return resources
|
||||
try:
|
||||
resources = bugout_client.list_resources(token=token, params=params)
|
||||
except Exception as err:
|
||||
logger.error("Failed to list resources")
|
||||
raise Exception(err)
|
||||
|
||||
if len(resources.resources) == 0:
|
||||
raise MetatxRequestersNotFound(
|
||||
"No metatx requesters for specific user available"
|
||||
)
|
||||
|
||||
metatx_requester_ids = [r.id for r in resources.resources]
|
||||
|
||||
return metatx_requester_ids
|
||||
|
||||
|
||||
def handle_register(args: argparse.Namespace) -> None:
|
||||
|
|
|
@ -96,21 +96,26 @@ async def list_registered_contracts_route(
|
|||
"""
|
||||
Users can use this endpoint to look up the contracts they have registered against this API.
|
||||
"""
|
||||
user, token = user_authorization
|
||||
|
||||
contracts_actions.fetch_metatx_requester_ids(token=token)
|
||||
_, token = user_authorization
|
||||
|
||||
try:
|
||||
metatx_requester_ids = contracts_actions.fetch_metatx_requester_ids(token=token)
|
||||
|
||||
registered_contracts_with_blockchain = (
|
||||
contracts_actions.lookup_registered_contracts(
|
||||
db_session=db_session,
|
||||
metatx_requester_id=user.id,
|
||||
metatx_requester_ids=metatx_requester_ids,
|
||||
blockchain=blockchain,
|
||||
address=address,
|
||||
limit=limit,
|
||||
offset=offset,
|
||||
)
|
||||
)
|
||||
except contracts_actions.MetatxRequestersNotFound:
|
||||
raise EngineHTTPException(
|
||||
status_code=404,
|
||||
detail="Metatx requester IDs not found",
|
||||
)
|
||||
except Exception as err:
|
||||
logger.error(repr(err))
|
||||
raise EngineHTTPException(status_code=500)
|
||||
|
|
Ładowanie…
Reference in New Issue