Class: Aikido::Zen::Middleware::RackThrottler
- Inherits:
-
Object
- Object
- Aikido::Zen::Middleware::RackThrottler
- Defined in:
- lib/aikido/zen/middleware/rack_throttler.rb
Overview
Rack middleware that rejects requests from clients that are making too many requests to a given endpoint, based in the runtime configuration in the Aikido dashboard.
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, config: Aikido::Zen.config, settings: Aikido::Zen.runtime_settings, detached_agent: Aikido::Zen.detached_agent) ⇒ RackThrottler
constructor
A new instance of RackThrottler.
Constructor Details
#initialize(app, config: Aikido::Zen.config, settings: Aikido::Zen.runtime_settings, detached_agent: Aikido::Zen.detached_agent) ⇒ RackThrottler
11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/aikido/zen/middleware/rack_throttler.rb', line 11 def initialize( app, config: Aikido::Zen.config, settings: Aikido::Zen.runtime_settings, detached_agent: Aikido::Zen.detached_agent ) @app = app @config = config @settings = settings @detached_agent = detached_agent end |
Instance Method Details
#call(env) ⇒ Object
23 24 25 26 27 28 29 30 31 |
# File 'lib/aikido/zen/middleware/rack_throttler.rb', line 23 def call(env) request = Aikido::Zen::Middleware.request_from(env) if should_throttle?(request) @config.rate_limited_responder.call(request) else @app.call(env) end end |