"""Точка входа для запуска API IOC Checker через Hypercorn."""

from __future__ import annotations

import asyncio
import logging

from hypercorn.asyncio import serve
from hypercorn.config import Config

from ioc_checker.config import configure_logging, settings

from .app import app

logger = logging.getLogger(__name__)


async def _serve() -> None:
    """Запустить сервер Hypercorn с настроенными хостом и портом."""

    configure_logging()
    config = Config()
    bind_address = f"{settings.api_host}:{settings.api_port}"
    config.bind = [bind_address]
    logger.info("Запускаем IOC Checker API на %s", bind_address)
    await serve(app, config)


def main() -> None:
    """Запустить сервер Hypercorn до прерывания."""

    try:
        asyncio.run(_serve())
    except KeyboardInterrupt:  # pragma: no cover - manual interruption path
        logger.info("Остановка IOC Checker API по запросу пользователя")


if __name__ == "__main__":
    main()
