class PactBroker::Api::Middleware::HttpDebugLogs

Constants

EXCLUDE_HEADERS
RACK_SESSION

Public Class Methods

new(app) click to toggle source
# File lib/pact_broker/api/middleware/http_debug_logs.rb, line 14
def initialize(app)
  @app = app
  @logger = logger
end

Public Instance Methods

call(env) click to toggle source
# File lib/pact_broker/api/middleware/http_debug_logs.rb, line 19
def call(env)
  if request_for_api?(env)
    env_to_log = env.reject { | header, _ | header.start_with?(*EXCLUDE_HEADERS) }
    env_to_log["rack.session"] = env["rack.session"].to_hash if env["rack.session"]
    env_to_log["rack.input"] = request_body(env) if env["rack.input"]
    logger.debug("env", env_to_log)
    status, headers, body = @app.call(env)
    logger.debug("response", "status" => status, "headers" => headers, "body" => body)
    [status, headers, body]
  else
    @app.call(env)
  end
end
request_body(env) click to toggle source
# File lib/pact_broker/api/middleware/http_debug_logs.rb, line 33
def request_body(env)
  buffer = env["rack.input"]
  request_body = buffer.read
  buffer.respond_to?(:rewind) && buffer.rewind
  JSON.parse(request_body) rescue request_body
end