# web_server.py - Веб-сервер для оверлея

from http.server import HTTPServer, SimpleHTTPRequestHandler
import threading
import os


class OverlayHTTPHandler(SimpleHTTPRequestHandler):

    def __init__(self, *args, **kwargs):
        # Эта строка заставляет сервер искать файлы там, где лежит сам скрипт
        base_dir = os.path.dirname(os.path.abspath(__file__))
        super().__init__(*args, directory=base_dir, **kwargs)

    def end_headers(self):
        # Разрешаем CORS (чтобы работало из OBS)
        self.send_header('Access-Control-Allow-Origin', '*')
        self.send_header('Cache-Control', 'no-store, no-cache, must-revalidate')
        super().end_headers()

    def log_message(self, format, *args):
        pass


class WebServer:
    def __init__(self, port=8888):
        self.port = port
        self.server = None
        self.thread = None

    def start(self):
        """Запуск веб-сервера"""
        try:
            # Проверяем наличие файла overlay.html
            if not os.path.exists('overlay.html'):
                print("❌ [WEB] Файл overlay.html не найден!")
                print("💡 [WEB] Создайте файл overlay.html в папке с ботом")
                return False

            # Проверяем наличие winner_data.json, создаём если нет
            if not os.path.exists('winner_data.json'):
                import json
                with open('winner_data.json', 'w') as f:
                    json.dump({"active": False, "winner": "", "deadline": 0}, f)
                print("✅ [WEB] Создан файл winner_data.json")

            self.server = HTTPServer(('0.0.0.0', self.port), OverlayHTTPHandler)
            self.thread = threading.Thread(target=self.server.serve_forever, daemon=True)
            self.thread.start()

            print(f"✅ [WEB] Веб-сервер запущен на порту {self.port}")
            print(f"📁 [WEB] Рабочая папка: {os.getcwd()}")
            print(f"🌐 [WEB] Локальный доступ: http://localhost:{self.port}/overlay.html")
            print(f"🌐 [WEB] Внешний доступ: http://192.168.1.108:{self.port}/overlay.html")
            print(f"📄 [WEB] Доступные файлы:")

            # Показываем список файлов
            for file in ['overlay.html', 'winner_data.json']:
                if os.path.exists(file):
                    print(f"   ✅ {file}")
                else:
                    print(f"   ❌ {file} (не найден)")

            return True
        except Exception as e:
            print(f"❌ [WEB] Ошибка запуска сервера: {e}")
            return False

    def stop(self):
        """Остановка веб-сервера"""
        if self.server:
            self.server.shutdown()
            print("👋 [WEB] Веб-сервер остановлен")


if __name__ == "__main__":
    # Тест
    print(f"Текущая папка: {os.getcwd()}")
    print(f"Файлы в папке: {os.listdir('.')}")

    server = WebServer(8888)
    server.start()

    print("\nНажмите Ctrl+C для остановки")
    try:
        while True:
            pass
    except KeyboardInterrupt:
        server.stop()
