Pujan-Dev's picture
feat: updated detector using Ela fft and meta
0b8f50d
raw
history blame
1.66 kB
from fastapi import APIRouter, Depends, HTTPException, UploadFile, File, Request
from fastapi.security import HTTPBearer
from pydantic import BaseModel
from slowapi.util import get_remote_address
from slowapi import Limiter
from slowapi.errors import RateLimitExceeded
from config import ACCESS_RATE
from .controller import (
handle_text_analysis,
handle_file_upload,
handle_sentence_level_analysis,
handle_file_sentence,
verify_token
)
limiter = Limiter(key_func=get_remote_address)
router = APIRouter()
security = HTTPBearer()
class TextInput(BaseModel):
text: str
@router.post("/analyse")
@limiter.limit(ACCESS_RATE)
async def analyze(request: Request, data: TextInput, token: str = Depends(verify_token)):
return await handle_text_analysis(data.text)
@router.post("/upload")
@limiter.limit(ACCESS_RATE)
async def upload_file(request: Request, file: UploadFile = File(...), token: str = Depends(verify_token)):
return await handle_file_upload(file)
@router.post("/analyse-sentences")
@limiter.limit(ACCESS_RATE)
async def analyze_sentences(request: Request, data: TextInput, token: str = Depends(verify_token)):
if not data.text:
raise HTTPException(status_code=400, detail="Missing 'text' in request body")
return await handle_sentence_level_analysis(data.text)
@router.post("/analyse-sentance-file")
@limiter.limit(ACCESS_RATE)
async def analyze_sentance_file(request: Request, file: UploadFile = File(...), token: str = Depends(verify_token)):
return await handle_file_sentence(file)
@router.get("/health")
@limiter.limit(ACCESS_RATE)
def health(request: Request):
return {"status": "ok"}