def rate_limit_user(request: HttpRequest, user: UserProfile, domain: str) -> None: """Returns whether or not a user was rate limited. Will raise a RateLimited exception if the user has been rate limited, otherwise returns and modifies request to contain the rate limit information""" entity = RateLimitedUser(user, domain=domain) ratelimited, time = rate_limit_entity(entity) request._ratelimit_applied_limits = True request._ratelimit_secs_to_freedom = time request._ratelimit_over_limit = ratelimited # Abort this request if the user is over their rate limits if ratelimited: raise RateLimited() calls_remaining, time_reset = api_calls_left(entity) request._ratelimit_remaining = calls_remaining request._ratelimit_secs_to_freedom = time_reset
def rate_limit_mirror_by_realm(recipient_realm: Realm) -> None: entity = RateLimitedRealmMirror(recipient_realm) ratelimited = rate_limit_entity(entity)[0] if ratelimited: raise RateLimited()
def rate_limit_password_reset_form_by_email(email: str) -> None: ratelimited, _ = rate_limit_entity(RateLimitedPasswordResetByEmail(email)) if ratelimited: raise RateLimited