Module: Onelinejson::AppControllerMethods

Extended by:
AppControllerMethods
Included in:
AppControllerMethods
Defined in:
lib/onelinejson.rb

Instance Method Summary collapse

Instance Method Details

#append_info_to_payload(payload) ⇒ Object



96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# 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) ⇒ Object



76
77
78
79
80
81
82
83
84
# 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) ⇒ Object



86
87
88
89
90
91
92
93
94
# 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) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
# 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