40 lines
1.1 KiB
Python
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"]
|