Spaces:
Running
Running
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 | |
async def analyze(request: Request, data: TextInput, token: str = Depends(verify_token)): | |
return await handle_text_analysis(data.text) | |
async def upload_file(request: Request, file: UploadFile = File(...), token: str = Depends(verify_token)): | |
return await handle_file_upload(file) | |
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) | |
async def analyze_sentance_file(request: Request, file: UploadFile = File(...), token: str = Depends(verify_token)): | |
return await handle_file_sentence(file) | |
def health(request: Request): | |
return {"status": "ok"} | |