constants.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. from __future__ import annotations
  2. import enum
  3. class ConfigVars:
  4. ENABLED = "RATELIMIT_ENABLED"
  5. KEY_FUNC = "RATELIMIT_KEY_FUNC"
  6. KEY_PREFIX = "RATELIMIT_KEY_PREFIX"
  7. FAIL_ON_FIRST_BREACH = "RATELIMIT_FAIL_ON_FIRST_BREACH"
  8. ON_BREACH = "RATELIMIT_ON_BREACH_CALLBACK"
  9. SWALLOW_ERRORS = "RATELIMIT_SWALLOW_ERRORS"
  10. APPLICATION_LIMITS = "RATELIMIT_APPLICATION"
  11. APPLICATION_LIMITS_PER_METHOD = "RATELIMIT_APPLICATION_PER_METHOD"
  12. APPLICATION_LIMITS_EXEMPT_WHEN = "RATELIMIT_APPLICATION_EXEMPT_WHEN"
  13. APPLICATION_LIMITS_DEDUCT_WHEN = "RATELIMIT_APPLICATION_DEDUCT_WHEN"
  14. APPLICATION_LIMITS_COST = "RATELIMIT_APPLICATION_COST"
  15. DEFAULT_LIMITS = "RATELIMIT_DEFAULT"
  16. DEFAULT_LIMITS_PER_METHOD = "RATELIMIT_DEFAULTS_PER_METHOD"
  17. DEFAULT_LIMITS_EXEMPT_WHEN = "RATELIMIT_DEFAULTS_EXEMPT_WHEN"
  18. DEFAULT_LIMITS_DEDUCT_WHEN = "RATELIMIT_DEFAULTS_DEDUCT_WHEN"
  19. DEFAULT_LIMITS_COST = "RATELIMIT_DEFAULTS_COST"
  20. REQUEST_IDENTIFIER = "RATELIMIT_REQUEST_IDENTIFIER"
  21. STRATEGY = "RATELIMIT_STRATEGY"
  22. STORAGE_URI = "RATELIMIT_STORAGE_URI"
  23. STORAGE_OPTIONS = "RATELIMIT_STORAGE_OPTIONS"
  24. HEADERS_ENABLED = "RATELIMIT_HEADERS_ENABLED"
  25. HEADER_LIMIT = "RATELIMIT_HEADER_LIMIT"
  26. HEADER_REMAINING = "RATELIMIT_HEADER_REMAINING"
  27. HEADER_RESET = "RATELIMIT_HEADER_RESET"
  28. HEADER_RETRY_AFTER = "RATELIMIT_HEADER_RETRY_AFTER"
  29. HEADER_RETRY_AFTER_VALUE = "RATELIMIT_HEADER_RETRY_AFTER_VALUE"
  30. IN_MEMORY_FALLBACK = "RATELIMIT_IN_MEMORY_FALLBACK"
  31. IN_MEMORY_FALLBACK_ENABLED = "RATELIMIT_IN_MEMORY_FALLBACK_ENABLED"
  32. META_LIMITS = "RATELIMIT_META"
  33. ON_META_BREACH = "RATELIMIT_ON_META_BREACH_CALLBACK"
  34. class HeaderNames(enum.Enum):
  35. """
  36. Enumeration of supported rate limit related headers to
  37. be used when configuring via :paramref:`~flask_limiter.Limiter.header_name_mapping`
  38. """
  39. #: Timestamp at which this rate limit will be reset
  40. RESET = "X-RateLimit-Reset"
  41. #: Remaining number of requests within the current window
  42. REMAINING = "X-RateLimit-Remaining"
  43. #: Total number of allowed requests within a window
  44. LIMIT = "X-RateLimit-Limit"
  45. #: Number of seconds to retry after at
  46. RETRY_AFTER = "Retry-After"
  47. class ExemptionScope(enum.Flag):
  48. """
  49. Flags used to configure the scope of exemption when used
  50. in conjunction with :meth:`~flask_limiter.Limiter.exempt`.
  51. """
  52. NONE = 0
  53. #: Exempt from application wide "global" limits
  54. APPLICATION = enum.auto()
  55. #: Exempt from default limits configured on the extension
  56. META = enum.auto()
  57. #: Exempts from meta limits
  58. DEFAULT = enum.auto()
  59. #: Exempts any nested blueprints. See :ref:`recipes:nested blueprints`
  60. DESCENDENTS = enum.auto()
  61. #: Exempt from any rate limits inherited from ancestor blueprints.
  62. #: See :ref:`recipes:nested blueprints`
  63. ANCESTORS = enum.auto()
  64. MAX_BACKEND_CHECKS = 5