import logging from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from .api.auth_routes import get_auth_router, build_token_verifier, get_current_user_dependency from .api.routes import get_router from .services.config_repo import ConfigRepository from .services.match_store import MatchStore from .services.pattern_service import PatternService from .services.scanner_manager import ScannerManager from .services.user_service import UserService logging.basicConfig( level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s", ) repo = ConfigRepository() match_store = MatchStore() pattern_service = PatternService(repo) scanner_manager = ScannerManager(repo, pattern_service, match_store) user_service = UserService() token_verifier = build_token_verifier(user_service) require_user = get_current_user_dependency(token_verifier) app = FastAPI(title="Streaming Overseer API", version="1.0.0") app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(get_auth_router(user_service), prefix="/api") app.include_router( get_router(repo, match_store, scanner_manager, require_user, token_verifier), prefix="/api", ) @app.on_event("shutdown") async def shutdown_event(): await scanner_manager.stop()