WriteFile(file_path="utils/rate_limit.py", ...)
class RateLimiter:
def __init__(self, requests_per_minute=100):
self.limit = requests_per_minute
self.buckets: Dict[str, deque] = {}
def check(self, user_id: str) -> bool:
...
ReplaceText(file_path="gateway/config.py", ...)
+ RATE_LIMIT_ENABLED: bool = True
+ RATE_LIMIT_PER_MINUTE: int = 100
ReplaceText(file_path="gateway/middleware.py", ...)
+ from utils.rate_limit import RateLimiter
+ limiter = RateLimiter(requests_per_minute=config.RATE_LIMIT_PER_MINUTE)
+ limiter.check(user_id) or raise HTTPException(429, "Rate limit exceeded")
ReplaceText(file_path="gateway/middleware.py", ...) # error handler
+ @app.exception_handler(429)
+ async def rate_limit_handler(request, exc):
+ return JSONResponse(status_code=429, content={"error": "rate_limit_exceeded", "retry_after": 60})
✔ All 4 files modified successfully.