Module: Sinatra::RateLimiter
- Defined in:
- lib/sinatra/rate-limiter.rb
Defined Under Namespace
Modules: Helpers Classes: Exceeded, RateLimit
Class Method Summary collapse
Class Method Details
.registered(app) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/sinatra/rate-limiter.rb', line 72 def self.registered(app) app.helpers RateLimiter::Helpers app.set :rate_limiter, false app.set :rate_limiter_environments, [:production] app.set :rate_limiter_default_limits, [10, 20] # 10 requests per 20 seconds app.set :rate_limiter_default_options, { send_headers: true, header_prefix: 'Rate-Limit', identifier: Proc.new{ |request| request.ip } } app.set :rate_limiter_redis_conn, Redis.new app.set :rate_limiter_redis_namespace, 'rate_limit' app.set :rate_limiter_redis_expires, 24*60*60 # This must be larger than longest limit time period app.error Sinatra::RateLimiter::Exceeded do status 429 content_type 'text/plain' "#{env['sinatra.error.rate_limiter'].bucket.eql?('default') ? 'R' : env['sinatra.error.rate_limiter'].bucket + ' R'}" + "ate limit exceeded: #{env['sinatra.error.rate_limiter'].requests} requests" + " in #{env['sinatra.error.rate_limiter'].seconds} seconds." + " Try again in #{env['sinatra.error.rate_limiter'].try_again} seconds." end end |