Sha256: f43064873ce47df31bd845595093aac4ba9c2fabf4d173f19ee7362dc5aa713f
Contents?: true
Size: 1.33 KB
Versions: 1
Compression:
Stored size: 1.33 KB
Contents
module Rack; module Throttle ## # This rate limiter strategy throttles the application by defining a # maximum number of allowed HTTP requests per hour (by default, 3,600 # requests per 60 minutes, which works out to an average of 1 request per # second). # # Note that this strategy doesn't use a sliding time window, but rather # tracks requests per distinct hour. This means that the throttling # counter is reset every hour on the hour (according to the server's local # timezone). # # @example Allowing up to 3,600 requests per hour # use Rack::Throttle::Hourly # # @example Allowing up to 100 requests per hour # use Rack::Throttle::Hourly, :max => 100 # class Hourly < TimeWindow ## # @param [#call] app # @param [Hash{Symbol => Object}] options # @option options [Integer] :max (3600) def initialize(app, options = {}) super end ## def max_per_hour @max_per_hour ||= options[:max_per_hour] || options[:max] || 3_600 end def self.default_ttl ENV['RACK_THROTTLE_HOURLY_TTL'] || 3600 end alias_method :max_per_window, :max_per_hour protected ## # @param [Rack::Request] request # @return [String] def cache_key(request) [super, Time.now.strftime('%Y-%m-%dT%H')].join(':') end end end; end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
improved-rack-throttle-w-expiry-0.8.0 | lib/rack/throttle/limiters/hourly.rb |