from slowapi import Limiter from config import ACCESS_RATE from .controller import handle_file_sentence, handle_sentence_level_analysis, nepali_text_analysis from .inferencer import classify_text from fastapi import APIRouter, File, Request, Depends, HTTPException, UploadFile from fastapi.security import HTTPBearer from slowapi import Limiter from slowapi.util import get_remote_address from pydantic import BaseModel from .controller import handle_file_upload router = APIRouter() limiter = Limiter(key_func=get_remote_address) security = HTTPBearer() # Input schema class TextInput(BaseModel): text: str @router.post("/analyse") @limiter.limit(ACCESS_RATE) async def analyse(request: Request, data: TextInput, token: str = Depends(security)): result = classify_text(data.text) return result @router.post("/upload") @limiter.limit(ACCESS_RATE) async def upload_file(request:Request,file:UploadFile=File(...),token:str=Depends(security)): return await handle_file_upload(file) @router.post("/analyse-sentences") @limiter.limit(ACCESS_RATE) async def upload_file(request:Request,data:TextInput,token:str=Depends(security)): return await handle_sentence_level_analysis(data.text) @router.post("/file-sentences-analyse") @limiter.limit(ACCESS_RATE) async def analyze_sentance_file(request: Request, file: UploadFile = File(...), token: str = Depends(security)): return await handle_file_sentence(file) @router.get("/health") @limiter.limit(ACCESS_RATE) def health(request: Request): return {"status": "ok"}