# app/scripts/get_ticker_24hr.py

from __future__ import annotations

import argparse
import json
import sys

from src.core.config import load_settings
from src.integrations.exchange.rest_client import ExchangeRestClient


def parse_args() -> argparse.Namespace:
    settings = load_settings()

    parser = argparse.ArgumentParser(
        description="Получить реальный ответ Dzengi ticker/24hr.",
    )
    parser.add_argument(
        "symbol",
        nargs="?",
        default=settings.default_symbol,
        help=(
            "Торговый символ. "
            f"По умолчанию: {settings.default_symbol}"
        ),
    )

    return parser.parse_args()


def main() -> int:
    args = parse_args()
    symbol = str(args.symbol).strip()

    if not symbol:
        print(
            "Торговый символ не должен быть пустым.",
            file=sys.stderr,
        )
        return 2

    try:
        payload = ExchangeRestClient().get_json(
            "/api/v1/ticker/24hr",
            params={
                "symbol": symbol,
            },
        )
    except Exception as exc:
        print(
            f"Не удалось получить ticker/24hr для {symbol}: "
            f"{type(exc).__name__}: {exc}",
            file=sys.stderr,
        )
        return 1

    print(
        json.dumps(
            payload,
            ensure_ascii=False,
            indent=2,
            sort_keys=True,
        )
    )

    return 0


if __name__ == "__main__":
    raise SystemExit(main())