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



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/onelinejson.rb', line 88

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



69
70
71
72
73
74
75
76
77
# File 'lib/onelinejson.rb', line 69

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



79
80
81
82
83
84
85
86
# File 'lib/onelinejson.rb', line 79

def extract_params(params)
  params.reject do |k,v|
    k == 'controller' ||
      k == 'action' ||
      v.is_a?(ActionDispatch::Http::UploadedFile) ||
      v.is_a?(Hash)
  end
end

#trim_values(hash) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/onelinejson.rb', line 54

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