Reorganize project structure
This commit is contained in:
50
checkaddy_app/lookup.py
Normal file
50
checkaddy_app/lookup.py
Normal file
@@ -0,0 +1,50 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime, timezone
|
||||
|
||||
from .api import ApiClient
|
||||
from .constants import DATA_SOURCE_BY_COIN, EXPLORER_URL_BY_COIN
|
||||
from .models import LookupResult
|
||||
from .validators import validate_address
|
||||
|
||||
|
||||
def build_lookup_result(client: ApiClient, coin: str, address: str) -> LookupResult:
|
||||
explorer_url = EXPLORER_URL_BY_COIN[coin].format(address=address)
|
||||
data_source = DATA_SOURCE_BY_COIN[coin]
|
||||
is_valid, reason = validate_address(coin, address)
|
||||
|
||||
result = LookupResult(
|
||||
coin=coin,
|
||||
address=address,
|
||||
is_valid_format=is_valid,
|
||||
validation_reason=reason,
|
||||
confirmed_balance=None,
|
||||
unconfirmed_balance=None,
|
||||
total_received=None,
|
||||
total_sent=None,
|
||||
tx_count=None,
|
||||
explorer_url=explorer_url,
|
||||
data_source=data_source,
|
||||
fetched_at_utc=datetime.now(timezone.utc).isoformat(),
|
||||
api_error=None,
|
||||
api_skipped=False,
|
||||
)
|
||||
|
||||
if not is_valid:
|
||||
result.api_skipped = True
|
||||
return result
|
||||
|
||||
try:
|
||||
payload = client.fetch_coin_info(coin, address)
|
||||
except RuntimeError as exc:
|
||||
result.api_error = str(exc)
|
||||
return result
|
||||
|
||||
if isinstance(payload.get("data_source"), str):
|
||||
result.data_source = payload["data_source"]
|
||||
result.confirmed_balance = payload["confirmed_balance"]
|
||||
result.unconfirmed_balance = payload["unconfirmed_balance"]
|
||||
result.total_received = payload["total_received"]
|
||||
result.total_sent = payload["total_sent"]
|
||||
result.tx_count = payload["tx_count"]
|
||||
return result
|
||||
Reference in New Issue
Block a user