module Onelinejson::AppControllerMethods

Public Instance Methods

append_info_to_payload(payload) click to toggle source
Calls superclass method
# File lib/onelinejson.rb, line 96
def append_info_to_payload(payload)
  super

  parameters = extract_params(params)
  parameters = trim_values(parameters)
  headers = extract_headers(request.headers)
  payload[:request] = {
    params: parameters,
    headers: headers,
    ip: request.ip,
    uuid: request.env['action_dispatch.request_id'],
    controller: self.class.name,
    action: action_name,
    date: Time.now.utc.iso8601,
  }
  u_id = @current_user_id || (@current_user && @current_user.id)
  if u_id.present?
    payload[:request][:user_id] = u_id.to_i
  end
end
extract_headers(headers) click to toggle source
# File lib/onelinejson.rb, line 76
def extract_headers(headers)
  if headers.respond_to?(:env)
    headers.env
  elsif headers.respond_to?(:to_hash)
    headers.to_hash
  end.select do |k, v|
    k =~ /^HTTP_/ && !REJECTED_HEADERS.any? {|regex| k =~ regex}
  end
end
extract_params(params) click to toggle source
# File lib/onelinejson.rb, line 86
def extract_params(params)
  params.reject do |k,v|
    k == 'controller' ||
      k == 'action' ||
      (defined?(ActionDispatch) && v.is_a?(ActionDispatch::Http::UploadedFile)) ||
      v.is_a?(Hash) ||
      REJECTED_PARAMS.include?(k.to_s.downcase)
  end
end
trim_values(hash) click to toggle source
# File lib/onelinejson.rb, line 61
def trim_values(hash)
  Hash[hash.map do |k, v|
    if v.is_a? String
      trimmed = if v.size > ENTRY_MAX_LENGTH
        v[0, ENTRY_MAX_LENGTH-1] + ELIP
      else
        v
      end
      [k, trimmed]
    else
      [k, v]
    end
  end]
end