discourse/lib/request_tracker/rate_limiters/base.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

41 lines
1.0 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
module RequestTracker
module RateLimiters
class Base
# :nodoc:
def initialize(request, cookie)
@request = request
@cookie = cookie
end
# This method is meant to be implemented in subclasses.
#
# @return [String] The key used to identify the rate limiter.
def rate_limit_key
raise NotImplementedError
end
# :nodoc:
def error_code_identifier
self.class.name.underscore.split("/").last
end
# This method is meant to be implemented in subclasses.
#
# @return [Boolean] Indicates if the rate limiter should be used for the request.
def active?
raise NotImplementedError
end
# This method is meant to be implemented in subclasses.
#
# @return [Boolean] Indicates whether the rate limit applies globally across all sites in the cluster or just for
# the current site.
def rate_limit_globally?
raise NotImplementedError
end
end
end
end