File size: 2,004 Bytes
6f034a7
 
b8aa51a
6f034a7
 
 
 
 
b8aa51a
 
 
de6291b
16680c0
b8aa51a
16680c0
6f034a7
de6291b
6f034a7
b8aa51a
6f034a7
 
 
b8aa51a
6f034a7
 
b8aa51a
 
 
 
 
 
 
 
 
 
 
6f034a7
 
 
 
b8aa51a
 
 
 
16680c0
6f034a7
 
 
 
 
b8aa51a
 
 
 
 
 
 
 
 
 
 
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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",
        ],
    }