File size: 1,716 Bytes
6f034a7
 
 
 
 
 
 
4fee431
09c8783
0b8f50d
 
6f034a7
09c8783
6f034a7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4fee431
09c8783
0b8f50d
 
6f034a7
 
 
 
 
09c8783
6f034a7
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
from fastapi import FastAPI, Request
from slowapi import Limiter, _rate_limit_exceeded_handler
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 config import ACCESS_RATE

import requests
limiter = Limiter(key_func=get_remote_address, default_limits=[ACCESS_RATE])

app = FastAPI()

# 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"]
    }