class RequestLog

Public Class Methods

from_request(request) click to toggle source
# File lib/rails_api_logger/request_log.rb, line 14
def self.from_request(request)
  request_body = (request.body.respond_to?(:read) ? request.body.read : request.body)
  body = request_body ? request_body.dup.force_encoding("UTF-8") : nil
  begin
    body = JSON.parse(body) if body.present?
  rescue JSON::ParserError
    body
  end
  create(path: request.path, request_body: body, method: request.method, started_at: Time.current)
end

Public Instance Methods

duration() click to toggle source
# File lib/rails_api_logger/request_log.rb, line 48
def duration
  return if started_at.nil? || ended_at.nil?
  ended_at - started_at
end
formatted_body(body) click to toggle source
# File lib/rails_api_logger/request_log.rb, line 33
def formatted_body(body)
  if body.is_a?(Hash)
    JSON.pretty_generate(body)
  else
    xml = Nokogiri::XML(body)
    if xml.errors.any?
      body
    else
      xml.to_xml(indent: 2)
    end
  end
rescue
  body
end
formatted_request_body() click to toggle source
# File lib/rails_api_logger/request_log.rb, line 25
def formatted_request_body
  formatted_body(request_body)
end
formatted_response_body() click to toggle source
# File lib/rails_api_logger/request_log.rb, line 29
def formatted_response_body
  formatted_body(response_body)
end