nu/src/bank_protocol/commands/account_balance_command.py
2025-02-08 09:17:19 +01:00

40 lines
1.1 KiB
Python

import logging
from core import Request, BankNodeConfig, Response
from bank_protocol.exceptions import InvalidRequest
from services.account_service import get_account_balance
from bank_protocol.proxy_handler import BankProxy
def account_balance(request: Request, config: BankNodeConfig) -> Response:
logger = logging.getLogger(__name__)
if request.body is None:
raise InvalidRequest("Invalid request format")
try:
split_body = request.body.split("/")
account = split_body[0]
ip = split_body[1]
except IndexError as e:
raise InvalidRequest("Invalid request format") from e
if ip != config.ip:
bank_proxy = BankProxy(request, ip, config)
return bank_proxy.proxy_request()
if not account.isdigit():
raise InvalidRequest("Account must be a number")
account_parsed = int(account)
if account_parsed < 10_000 or account_parsed > 99_999:
raise InvalidRequest("Account number out of range")
balance = get_account_balance(account_parsed)
return f"AB {str(balance)}"
__all__ = ["account_balance"]