from fastapi import APIRouter, Request, Depends
from fastapi.responses import JSONResponse
from utils.turnstile_helper import verify_turnstile
from utils.upload_helper import (
    response_error,
    response_success,
    store_uploaded_file_content,
)

router = APIRouter()

@router.options("/upload")
async def upload_options():
    return JSONResponse(content="OK", status_code=204)


@router.post("/upload", dependencies=[Depends(verify_turnstile)])
async def upload_user_image(request: Request):
    form_data = await request.form()
    req_type = str(form_data.get("type", "")).lower()

    if req_type != "img":
        return response_error("Chỉ hỗ trợ upload ảnh.")

    files = form_data.getlist("files")
    if not files:
        return response_error("Không tìm thấy file ảnh.")

    saved = []
    for file_obj in files:
        if not file_obj.filename:
            continue

        content = await file_obj.read()
        saved_info = store_uploaded_file_content(
            file_obj.filename,
            content,
            sub_dir="upload_img",
            is_img=True,
        )
        saved.append(saved_info)

    return response_success(saved)