class Rester::Service::Middleware::RequestHandler

Create a Request object for this thread, store the correlation ID, and perform the necessary logging. Cleanup the request once it's complete.

Public Instance Methods

call(env) click to toggle source
Calls superclass method Rester::Service::Middleware::Base#call
# File lib/rester/service/middleware/request_handler.rb, line 7
def call(env)
  Rester.wrap_request do
    Rester.request = request = Rester::Service::Request.new(env)
    Rester.correlation_id = request.correlation_id
    Rester.request_info[:producer_name] = service.name
    Rester.request_info[:consumer_name] = request.consumer_name
    Rester.request_info[:path] = request.path_info
    Rester.request_info[:verb] = request.request_method

    service.logger.info('request received')

    start_time = Time.now.to_f
    super.tap { |response|
      elapsed_ms = (Time.now.to_f - start_time) * 1000
      response[1]["X-Rester-Producer-Name"] = service.name
      service.logger.info("responding with #{response[0]} after %0.3fms" %
        elapsed_ms)
    }
  end
end