Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, HTTPException, BackgroundTasks, Request | |
| from pydantic import BaseModel | |
| import os | |
| from dotenv import load_dotenv | |
| from solver import solve_quiz | |
| import logging | |
| # Configure logging | |
| logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') | |
| logger = logging.getLogger(__name__) | |
| load_dotenv() | |
| app = FastAPI() | |
| class QuizRequest(BaseModel): | |
| email: str | |
| secret: str | |
| url: str | |
| class Config: | |
| extra = "allow" | |
| async def solve_quiz_endpoint(request: QuizRequest, background_tasks: BackgroundTasks): | |
| logger.info(f"Received quiz request for URL: {request.url}") | |
| # Verify secret | |
| expected_secret = os.getenv("QUIZ_SECRET") | |
| if not expected_secret: | |
| logger.warning("QUIZ_SECRET not set in environment variables. Skipping secret validation.") | |
| elif request.secret != expected_secret: | |
| logger.error(f"Invalid secret provided: {request.secret} is not {expected_secret}") | |
| raise HTTPException(status_code=403, detail="Invalid secret") | |
| # Start solving in background | |
| background_tasks.add_task(solve_quiz, request.url, request.email, request.secret) | |
| return {"message": "Task received, solving started."} | |
| async def health_check(): | |
| return {"status": "ok"} | |