class Shift::Api::Core::Middleware::Inspector

Faraday middleware to add the ability to register to receive the request environment and/or the response environment from faraday. Useful for recording or even changing requests / responses

Attributes

after_response_handlers[RW]
app[RW]
before_request_handlers[RW]

Public Class Methods

new(app, before_request_handlers:, after_response_handlers:) click to toggle source
# File lib/shift/api/core/middleware/inspector.rb, line 11
def initialize(app, before_request_handlers:, after_response_handlers:)
  self.app = app
  self.before_request_handlers = before_request_handlers
  self.after_response_handlers = after_response_handlers
end

Public Instance Methods

call(env) click to toggle source

Calls the provided handlers before each request and after the response @param [Faraday::Env] env The environment from faraday

# File lib/shift/api/core/middleware/inspector.rb, line 19
def call(env)
  notify_request_handlers(env)
  request = env.dup
  app.call(env).on_complete do |env|
    notify_response_handlers(request, env)
  end
end

Private Instance Methods

notify_request_handlers(env) click to toggle source
# File lib/shift/api/core/middleware/inspector.rb, line 29
def notify_request_handlers(env)
  before_request_handlers.each do |handler|
    handler.call(env)
    request = env.dup
  end
end
notify_response_handlers(request, env) click to toggle source
# File lib/shift/api/core/middleware/inspector.rb, line 36
def notify_response_handlers(request, env)
  after_response_handlers.each do |handler|
    handler.call(request, env)
  end
end