Coverage for app / core / rate_limiter.py: 100%

10 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-05-05 17:54 +0000

1from slowapi import Limiter 

2from slowapi.util import get_remote_address 

3from starlette.requests import Request 

4from app.core.config import settings 

5 

6def _rate_limit_key(request: Request) -> str: 

7 forwarded = request.headers.get("X-Forwarded-For") 

8 if forwarded: 

9 return forwarded.split(",")[0].strip() 

10 return request.client.host if request.client else "unknown" 

11 

12# Configure Limiter to use the centralized Redis storage 

13limiter = Limiter( 

14 key_func=_rate_limit_key, 

15 storage_uri=settings.redis_url 

16)