from fastapi import APIRouter, BackgroundTasks, Depends, File, Header, UploadFile
from pydantic import BaseModel, HttpUrl

from app.services.auth_service import verify_api_key
from app.controllers.handwriting_controller import HandwritingController

router = APIRouter()
controller = HandwritingController()


class ProcessUrlRequest(BaseModel):
    url: HttpUrl


@router.post("/handwriting/process")
async def handwriting_upload(
    background_tasks: BackgroundTasks,
    file: UploadFile = File(...),
    api_key: str = Depends(verify_api_key),
):
    return await controller.process_upload(background_tasks, file)


@router.post("/handwriting/process-url")
async def handwriting_process_url(
    payload: ProcessUrlRequest,
    api_key: str = Depends(verify_api_key),
    request_id: str = Header(..., alias="X-Request-Id"),
    user_id: str = Header(..., alias="X-User-Id"),
):
    return controller.process_url(str(payload.url), request_id, user_id)
