Spaces:
Running
Running
Merge pull request #13 from Tobkubos/backend-setup
Browse files
backend/app/api/routes.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
| 1 |
import logging
|
| 2 |
from fastapi import APIRouter, HTTPException, Request, status
|
| 3 |
from slowapi.errors import RateLimitExceeded
|
|
|
|
| 4 |
|
| 5 |
from app.models.schemas import (
|
| 6 |
AnalysisRequest,
|
|
@@ -123,13 +124,11 @@ async def get_discord_guild_config(guild_id: str):
|
|
| 123 |
)
|
| 124 |
async def analyze(request: Request, payload: AnalysisRequest) -> AnalysisResponse:
|
| 125 |
guild_id = payload.guild_id
|
|
|
|
| 126 |
|
| 127 |
-
|
| 128 |
-
limiter.try_increment(f"analyze:{guild_id}", "1/5seconds")
|
| 129 |
-
except RateLimitExceeded:
|
| 130 |
raise HTTPException(status_code=429, detail="Rate limit exceeded for this guild")
|
| 131 |
|
| 132 |
-
|
| 133 |
if isinstance(payload, TextAnalysisRequest):
|
| 134 |
content_type = "text"
|
| 135 |
elif isinstance(payload, ImageAnalysisRequest):
|
|
|
|
| 1 |
import logging
|
| 2 |
from fastapi import APIRouter, HTTPException, Request, status
|
| 3 |
from slowapi.errors import RateLimitExceeded
|
| 4 |
+
from limits import parse
|
| 5 |
|
| 6 |
from app.models.schemas import (
|
| 7 |
AnalysisRequest,
|
|
|
|
| 124 |
)
|
| 125 |
async def analyze(request: Request, payload: AnalysisRequest) -> AnalysisResponse:
|
| 126 |
guild_id = payload.guild_id
|
| 127 |
+
limit_item = parse("1/5seconds")
|
| 128 |
|
| 129 |
+
if not limiter.limiter.hit(limit_item, f"analyze:{guild_id}"):
|
|
|
|
|
|
|
| 130 |
raise HTTPException(status_code=429, detail="Rate limit exceeded for this guild")
|
| 131 |
|
|
|
|
| 132 |
if isinstance(payload, TextAnalysisRequest):
|
| 133 |
content_type = "text"
|
| 134 |
elif isinstance(payload, ImageAnalysisRequest):
|