77 lines
2.8 KiB
Python
77 lines
2.8 KiB
Python
from __future__ import annotations
|
|
|
|
import enum
|
|
|
|
|
|
class ConfigVars:
|
|
ENABLED = "RATELIMIT_ENABLED"
|
|
KEY_FUNC = "RATELIMIT_KEY_FUNC"
|
|
KEY_PREFIX = "RATELIMIT_KEY_PREFIX"
|
|
FAIL_ON_FIRST_BREACH = "RATELIMIT_FAIL_ON_FIRST_BREACH"
|
|
ON_BREACH = "RATELIMIT_ON_BREACH_CALLBACK"
|
|
SWALLOW_ERRORS = "RATELIMIT_SWALLOW_ERRORS"
|
|
APPLICATION_LIMITS = "RATELIMIT_APPLICATION"
|
|
APPLICATION_LIMITS_PER_METHOD = "RATELIMIT_APPLICATION_PER_METHOD"
|
|
APPLICATION_LIMITS_EXEMPT_WHEN = "RATELIMIT_APPLICATION_EXEMPT_WHEN"
|
|
APPLICATION_LIMITS_DEDUCT_WHEN = "RATELIMIT_APPLICATION_DEDUCT_WHEN"
|
|
APPLICATION_LIMITS_COST = "RATELIMIT_APPLICATION_COST"
|
|
DEFAULT_LIMITS = "RATELIMIT_DEFAULT"
|
|
DEFAULT_LIMITS_PER_METHOD = "RATELIMIT_DEFAULTS_PER_METHOD"
|
|
DEFAULT_LIMITS_EXEMPT_WHEN = "RATELIMIT_DEFAULTS_EXEMPT_WHEN"
|
|
DEFAULT_LIMITS_DEDUCT_WHEN = "RATELIMIT_DEFAULTS_DEDUCT_WHEN"
|
|
DEFAULT_LIMITS_COST = "RATELIMIT_DEFAULTS_COST"
|
|
REQUEST_IDENTIFIER = "RATELIMIT_REQUEST_IDENTIFIER"
|
|
STRATEGY = "RATELIMIT_STRATEGY"
|
|
STORAGE_URI = "RATELIMIT_STORAGE_URI"
|
|
STORAGE_OPTIONS = "RATELIMIT_STORAGE_OPTIONS"
|
|
HEADERS_ENABLED = "RATELIMIT_HEADERS_ENABLED"
|
|
HEADER_LIMIT = "RATELIMIT_HEADER_LIMIT"
|
|
HEADER_REMAINING = "RATELIMIT_HEADER_REMAINING"
|
|
HEADER_RESET = "RATELIMIT_HEADER_RESET"
|
|
HEADER_RETRY_AFTER = "RATELIMIT_HEADER_RETRY_AFTER"
|
|
HEADER_RETRY_AFTER_VALUE = "RATELIMIT_HEADER_RETRY_AFTER_VALUE"
|
|
IN_MEMORY_FALLBACK = "RATELIMIT_IN_MEMORY_FALLBACK"
|
|
IN_MEMORY_FALLBACK_ENABLED = "RATELIMIT_IN_MEMORY_FALLBACK_ENABLED"
|
|
META_LIMITS = "RATELIMIT_META"
|
|
ON_META_BREACH = "RATELIMIT_ON_META_BREACH_CALLBACK"
|
|
|
|
|
|
class HeaderNames(enum.Enum):
|
|
"""
|
|
Enumeration of supported rate limit related headers to
|
|
be used when configuring via :paramref:`~flask_limiter.Limiter.header_name_mapping`
|
|
"""
|
|
|
|
#: Timestamp at which this rate limit will be reset
|
|
RESET = "X-RateLimit-Reset"
|
|
#: Remaining number of requests within the current window
|
|
REMAINING = "X-RateLimit-Remaining"
|
|
#: Total number of allowed requests within a window
|
|
LIMIT = "X-RateLimit-Limit"
|
|
#: Number of seconds to retry after at
|
|
RETRY_AFTER = "Retry-After"
|
|
|
|
|
|
class ExemptionScope(enum.Flag):
|
|
"""
|
|
Flags used to configure the scope of exemption when used
|
|
in conjunction with :meth:`~flask_limiter.Limiter.exempt`.
|
|
"""
|
|
|
|
NONE = 0
|
|
|
|
#: Exempt from application wide "global" limits
|
|
APPLICATION = enum.auto()
|
|
#: Exempts from meta limits
|
|
META = enum.auto()
|
|
#: Exempt from default limits configured on the extension
|
|
DEFAULT = enum.auto()
|
|
#: Exempts any nested blueprints. See :ref:`recipes:nested blueprints`
|
|
DESCENDENTS = enum.auto()
|
|
#: Exempt from any rate limits inherited from ancestor blueprints.
|
|
#: See :ref:`recipes:nested blueprints`
|
|
ANCESTORS = enum.auto()
|
|
|
|
|
|
MAX_BACKEND_CHECKS = 5
|