Pujan-Dev's picture
push to testing branch
b8aa51a
from fastapi import FastAPI, Request
from slowapi import Limiter, _rate_limit_exceeded_handler
from fastapi.responses import FileResponse
from slowapi.middleware import SlowAPIMiddleware
from slowapi.errors import RateLimitExceeded
from slowapi.util import get_remote_address
from fastapi.responses import JSONResponse
from features.text_classifier.routes import router as text_classifier_router
from features.nepali_text_classifier.routes import (
router as nepali_text_classifier_router,
)
from features.image_classifier.routes import router as image_classifier_router
from features.image_edit_detector.routes import router as image_edit_detector_router
from fastapi.staticfiles import StaticFiles
from config import ACCESS_RATE
import requests
limiter = Limiter(key_func=get_remote_address, default_limits=[ACCESS_RATE])
app = FastAPI()
# added the robots.txt
# Set up SlowAPI
app.state.limiter = limiter
app.add_exception_handler(
RateLimitExceeded,
lambda request, exc: JSONResponse(
status_code=429,
content={
"status_code": 429,
"error": "Rate limit exceeded",
"message": "Too many requests. Chill for a bit and try again",
},
),
)
app.add_middleware(SlowAPIMiddleware)
# Include your routes
app.include_router(text_classifier_router, prefix="/text")
app.include_router(nepali_text_classifier_router, prefix="/NP")
app.include_router(image_classifier_router, prefix="/AI-image")
app.include_router(image_edit_detector_router, prefix="/detect")
@app.get("/")
@limiter.limit(ACCESS_RATE)
async def root(request: Request):
return {
"message": "API is working",
"endpoints": [
"/text/analyse",
"/text/upload",
"/text/analyse-sentences",
"/text/analyse-sentance-file",
"/NP/analyse",
"/NP/upload",
"/NP/analyse-sentences",
"/NP/file-sentences-analyse",
"/AI-image/analyse",
],
}