commit
This commit is contained in:
35
backend/app/api/endpoints/scripts.py
Normal file
35
backend/app/api/endpoints/scripts.py
Normal file
@@ -0,0 +1,35 @@
|
||||
|
||||
from fastapi import APIRouter, UploadFile, File, HTTPException, status, Depends
|
||||
from typing import Any
|
||||
from app.services.script_parser import parser_service
|
||||
from app.schemas.script import ScriptAnalysisResponse
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@router.post("/parse", response_model=ScriptAnalysisResponse)
|
||||
async def parse_script(
|
||||
file: UploadFile = File(...)
|
||||
) -> Any:
|
||||
if not file.content_type in ["text/plain", "text/markdown", "application/octet-stream"]:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_400_BAD_REQUEST,
|
||||
detail="Only text files are supported for now."
|
||||
)
|
||||
|
||||
content = await file.read()
|
||||
try:
|
||||
text_content = content.decode("utf-8")
|
||||
except UnicodeDecodeError:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_400_BAD_REQUEST,
|
||||
detail="File must be UTF-8 encoded text."
|
||||
)
|
||||
|
||||
try:
|
||||
result = await parser_service.parse_script(text_content)
|
||||
return result
|
||||
except Exception as e:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
detail=f"Error parsing script: {str(e)}"
|
||||
)
|
||||
Reference in New Issue
Block a user