module Sinatra::RateLimiter
Public Class Methods
registered(app)
click to toggle source
# 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