示例#1
0
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
示例#2
0
def rate_limit_mirror_by_realm(recipient_realm: Realm) -> None:
    entity = RateLimitedRealmMirror(recipient_realm)
    ratelimited = rate_limit_entity(entity)[0]

    if ratelimited:
        raise RateLimited()
示例#3
0
文件: forms.py 项目: seasies/zulip
def rate_limit_password_reset_form_by_email(email: str) -> None:
    ratelimited, _ = rate_limit_entity(RateLimitedPasswordResetByEmail(email))
    if ratelimited:
        raise RateLimited