Class: IdempotentRequest::Middleware
- Inherits:
-
Object
- Object
- IdempotentRequest::Middleware
- Defined in:
- lib/idempotent-request/middleware.rb
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, config = {}) ⇒ Middleware
constructor
A new instance of Middleware.
- #process(env) ⇒ Object
Constructor Details
#initialize(app, config = {}) ⇒ Middleware
Returns a new instance of Middleware.
3 4 5 6 7 8 9 |
# File 'lib/idempotent-request/middleware.rb', line 3 def initialize(app, config = {}) @app = app @config = config @policy = config.fetch(:policy) @notifier = ActiveSupport::Notifications if defined?(ActiveSupport::Notifications) @conflict_response_status = config.fetch(:conflict_response_status, 429) end |
Instance Method Details
#call(env) ⇒ Object
11 12 13 14 |
# File 'lib/idempotent-request/middleware.rb', line 11 def call(env) # dup the middleware to be thread-safe dup.process(env) end |
#process(env) ⇒ Object
16 17 18 19 20 21 22 23 24 |
# File 'lib/idempotent-request/middleware.rb', line 16 def process(env) set_request(env) request.env['idempotent.request'] = {} return app.call(request.env) unless process? request.env['idempotent.request']['key'] = request.key response = read_idempotent_request || write_idempotent_request || concurrent_request_response instrument(request) response end |