Sha256: 6d8757210f5a26e89a5a36492437bfb87ce1a9e53a316847b9daeaa25e2cd2e9

Contents?: true

Size: 953 Bytes

Versions: 2

Compression:

Stored size: 953 Bytes

Contents

require "net/https"
require "multi_json"

module CFoundry
  module TraceHelpers

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


    def response_trace(response)
      return nil unless response
      info = ["RESPONSE: [#{response.code}]"]
      info << "RESPONSE_HEADERS:"
      info << header_trace(response)
      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.to_hash.sort.map do |key, value|
        "  #{key} : #{value.join(", ")}"
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cfoundry-0.4.21 lib/cfoundry/trace_helpers.rb
cfoundry-0.4.19 lib/cfoundry/trace_helpers.rb