Sha256: f657482c75df414558cc6f5efa84be331bf260d686f62ec313ac37af62d1c685

Contents?: true

Size: 1.11 KB

Versions: 1

Compression:

Stored size: 1.11 KB

Contents

require "net/https"
require "multi_json"

module CFoundry
  module TraceHelpers
    PROTECTED_ATTRIBUTES = ['Authorization']

    def request_trace(request)
      return nil unless request
      info = ["REQUEST: #{request[:method]} #{request[:url]}"]
      info << "REQUEST_HEADERS:"
      info << header_trace(request[:headers])
      info << "REQUEST_BODY: #{request[:body]}" if request[:body]
      info.join("\n")
    end


    def response_trace(response)
      return nil unless response
      info = ["RESPONSE: [#{response[:status]}]"]
      info << "RESPONSE_HEADERS:"
      info << header_trace(response[:headers])
      info << "RESPONSE_BODY:"
      begin
        parsed_body = MultiJson.load(response[:body])
        info << MultiJson.dump(parsed_body, :pretty => true)
      rescue
        info << "#{response[:body]}"
      end
      info.join("\n")
    end

    private

    def header_trace(headers)
      headers.sort.map do |key, value|
        unless PROTECTED_ATTRIBUTES.include?(key)
          "  #{key} : #{value}"
        else
          "  #{key} : [PRIVATE DATA HIDDEN]"
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cfoundry-2.3.6.rc1 lib/cfoundry/trace_helpers.rb