Spaces:
Sleeping
Sleeping
File size: 1,351 Bytes
ff23105 78331be ff23105 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 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"
@app.post("/", status_code=200)
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."}
@app.get("/health")
async def health_check():
return {"status": "ok"}
|