module CFoundry::TraceHelpers

Constants

PROTECTED_ATTRIBUTES

Public Instance Methods

request_trace(request) click to toggle source
# File lib/cfoundry/trace_helpers.rb, line 8
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
response_trace(response) click to toggle source
# File lib/cfoundry/trace_helpers.rb, line 18
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])
    filter_protected_attributes(parsed_body)
    info << MultiJson.dump(parsed_body, :pretty => true)
  rescue
    info << "#{response[:body]}"
  end
  info.join("\n")
end

Private Instance Methods

filter_protected_attributes(hash_or_array) click to toggle source
# File lib/cfoundry/trace_helpers.rb, line 46
def filter_protected_attributes(hash_or_array)
  if hash_or_array.is_a? Array
    hash_or_array.each do |value|
      filter_protected_attributes(value)
    end
  else
    hash_or_array.each do |key, value|
      if PROTECTED_ATTRIBUTES.include? key
        hash_or_array[key] = "[PRIVATE DATA HIDDEN]"
      else
        if value.is_a?(Hash) || value.is_a?(Array)
          filter_protected_attributes(value)
        end
      end
    end
  end
end
header_trace(headers) click to toggle source
# File lib/cfoundry/trace_helpers.rb, line 36
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