
    iM                     D    S r SSKJr  SSKJr  SSSSSSS	.rS
\S\4S jrg)zRate limit configuration for TipSharks API.

Provides centralized rate limit definitions and a key function that supports
per-user rate limiting via the X-User-ID header, with IP fallback for anonymous clients.
    )Request)get_remote_addressz
100/minutez
200/minutez	50/minutez	10/minutez	20/minute)default
races_listrace_detailpredictionsexportadminrequestreturnc                     U R                   R                  S5      nU(       a  UR                  5       nU(       a  SU 3$ S[        U 5       3$ )a  Generate rate limit key from user ID header or IP address.

Uses the ``X-User-ID`` header for per-user rate limiting when the mobile
client provides an anonymous identifier. Falls back to the client IP
address for unauthenticated (e.g. browser) requests.

Keys are namespaced (``user:`` / ``ip:``) to avoid accidental collisions.

Args:
    request: FastAPI incoming request.

Returns:
    A string suitable for use as a slowapi rate-limit key.
z	X-User-IDzuser:zip:)headersgetstripr   )r   user_ids     D/root/tipsharks/tipsharks-elo-api/packages/core/common/rate_limit.pyget_user_rate_limit_keyr      sL     oo!!+.G--/7)$$ #G,-..    N)__doc__fastapir   slowapi.utilr   RATE_LIMITSstrr    r   r   <module>r      s@     + /W / /r   