"""Rate limiter keyed by X-API-Key (or IP if missing). Used by main and routes.""" from app.config import get_rate_limit_per_minute from slowapi import Limiter from slowapi.util import get_remote_address def _key_func(request) -> str: api_key = request.headers.get("X-API-Key") or get_remote_address(request) return str(api_key) limiter = Limiter(key_func=_key_func) def rate_limit_string() -> str: """e.g. '60/minute' from config.""" n = get_rate_limit_per_minute() return f"{n}/minute"