"""
Web Server Service - сервис для запуска веб-сервера
"""
import logging
import threading
from typing import Optional

logger = logging.getLogger(__name__)


class WebServerService:
    """Сервис для управления веб-сервером"""

    def __init__(self, host: str = None, port: int = None):
        # Импортируем конфиг при инициализации
        import config
        self.host = host or config.WEB_ADMIN_HOST
        self.port = port or config.WEB_ADMIN_PORT
        self.server = None
        self.thread: Optional[threading.Thread] = None
        self.is_running = False

    def start(self):
        """Запустить веб-сервер в отдельном потоке"""
        if self.is_running:
            logger.warning("Веб-сервер уже запущен")
            return

        try:
            import uvicorn
            from web.app import app
            import config

            def run_server():
                uvicorn.run(app, host=self.host, port=self.port, log_level="info")

            self.thread = threading.Thread(target=run_server, daemon=True)
            self.thread.start()
            self.is_running = True

            logger.info(f"✅ Веб-сервер запущен на http://{self.host}:{self.port}")
            logger.info(f"   Логин: {config.WEB_ADMIN_LOGIN}")
            logger.info(f"   Пароль: {config.WEB_ADMIN_PASSWORD}")

        except Exception as e:
            logger.error(f"Ошибка запуска веб-сервера: {e}")
            self.is_running = False

    def stop(self):
        """Остановить веб-сервер"""
        if not self.is_running:
            return

        try:
            self.is_running = False
            logger.info("🛑 Веб-сервер остановлен")
        except Exception as e:
            logger.error(f"Ошибка остановки веб-сервера: {e}")

    def get_url(self) -> str:
        """Получить URL веб-интерфейса"""
        return f"http://{self.host}:{self.port}"
