Fix #5168: Disable rate limits on testbooru/non-prod environments.

Add a `rate_limits_enabled?` config option for disabling rate limits.
This commit is contained in:
evazion
2022-05-18 14:16:06 -05:00
parent 25f0b01d50
commit 2fe38c1c07
2 changed files with 10 additions and 3 deletions

View File

@@ -13,14 +13,16 @@
class RateLimiter
class RateLimitError < StandardError; end
attr_reader :action, :keys, :cost, :rate, :burst
attr_reader :action, :keys, :cost, :rate, :burst, :enabled
alias_method :enabled?, :enabled
def initialize(action, keys = ["*"], cost: 1, rate: 1, burst: 1)
def initialize(action, keys = ["*"], cost: 1, rate: 1, burst: 1, enabled: Danbooru.config.rate_limits_enabled?)
@action = action
@keys = keys
@cost = cost
@rate = rate
@burst = burst
@enabled = enabled
end
# Create a RateLimiter object for the given action. A RateLimiter usually has
@@ -46,7 +48,7 @@ class RateLimiter
# @return [Boolean] true if the action is limited for the user or their IP
def limited?
rate_limits.any?(&:limited?)
enabled? && rate_limits.any?(&:limited?)
end
def as_json(options = {})

View File

@@ -372,6 +372,11 @@ module Danbooru
true
end
# Whether to enable API rate limits.
def rate_limits_enabled?
true
end
def stripe_secret_key
end