File size: 576 Bytes
027123c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | """Rate limiting middleware using slowapi."""
from slowapi import Limiter, _rate_limit_exceeded_handler
from slowapi.util import get_remote_address
from slowapi.errors import RateLimitExceeded
from fastapi import Request
limiter = Limiter(key_func=get_remote_address)
def get_user_id_from_request(request: Request) -> str:
"""Extract user ID from request for rate limiting."""
# For document upload, use user_id if available, otherwise IP
user_id = request.headers.get("X-User-ID")
if user_id:
return user_id
return get_remote_address(request)
|