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"]