Sha256: 57c1f7311a17cdc98eb5ebdfee50a214bac311b29bf61361a617100483fa7cf0

Contents?: true

Size: 1.26 KB

Versions: 11

Compression:

Stored size: 1.26 KB

Contents

require "pact_broker/logging"
require "rack/pact_broker/request_target"

module PactBroker
  module Api
    module Middleware
      class HttpDebugLogs
        include PactBroker::Logging
        include Rack::PactBroker::RequestTarget

        EXCLUDE_HEADERS = ["puma.", "rack.", "pactbroker."]
        RACK_SESSION = "rack.session"

        def initialize(app)
          @app = app
          @logger = logger
        end

        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

        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
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
pact_broker-2.113.0 lib/pact_broker/api/middleware/http_debug_logs.rb
pact_broker-2.112.0 lib/pact_broker/api/middleware/http_debug_logs.rb
pact_broker-2.111.0 lib/pact_broker/api/middleware/http_debug_logs.rb
pact_broker-2.109.1 lib/pact_broker/api/middleware/http_debug_logs.rb
pact_broker-2.109.0 lib/pact_broker/api/middleware/http_debug_logs.rb
pact_broker-2.108.0 lib/pact_broker/api/middleware/http_debug_logs.rb
pact_broker-2.107.1 lib/pact_broker/api/middleware/http_debug_logs.rb
pact_broker-2.107.0 lib/pact_broker/api/middleware/http_debug_logs.rb
pact_broker-2.107.0.beta.1 lib/pact_broker/api/middleware/http_debug_logs.rb
pact_broker-2.106.0 lib/pact_broker/api/middleware/http_debug_logs.rb
pact_broker-2.105.0 lib/pact_broker/api/middleware/http_debug_logs.rb