module Tracer::Client

Public Class Methods

end_request() click to toggle source
# File lib/tracer_client/client.rb, line 15
def end_request
  Thread.current[:tracer_current_user] = nil
  Thread.current[:tracer_request] = nil
  Thread.current[:tracer_params] = nil
end
log(notice) click to toggle source
# File lib/tracer_client/client.rb, line 22
def log(notice)
  data = notice.merge(request_log_data)
  Thread.new do
    Tracer::Server.log(data)
  end
end
log_changes(changes) click to toggle source
# File lib/tracer_client/client.rb, line 30
def log_changes(changes)
  data = changes.merge(request_changes_data)
  Thread.new do
    Tracer::Server.log_changes(data)
  end
end
start_request(current_user, request, params, session) click to toggle source
# File lib/tracer_client/client.rb, line 8
def start_request(current_user, request, params, session)
  Thread.current[:tracer_current_user] = current_user
  Thread.current[:tracer_request] = request
  Thread.current[:tracer_params] = get_params(params)
end

Private Class Methods

get_params(params) click to toggle source
# File lib/tracer_client/client.rb, line 41
def get_params(params)
  @parameter_filter ||= ActionDispatch::Http::ParameterFilter.new Rails.application.config.filter_parameters
  @parameter_filter.filter(params.except(:utf8, :authenticity_token, :_method)).to_unsafe_hash
end
request_changes_data() click to toggle source
# File lib/tracer_client/client.rb, line 103
def request_changes_data
  request_data
end
request_data() click to toggle source
# File lib/tracer_client/client.rb, line 47
def request_data
  data = {context: {}}

  request = Thread.current[:tracer_request]
  if request
    data[:context].merge!(
        url:        request.original_url,
        referer:    request.headers['Referer'],
        user_agent: request.headers['User-Agent'],
        ip:         request.remote_ip,
        method:     request.request_method,
        request_id: request.uuid,
        headers:    {
            accept: request.headers['Accept'],
        }
    )
  end

  cookies = Thread.current[:cookies]
  if cookies && cookies[:administrator_id]
    data[:context][:cookies] = {
        administrator_id: cookies.signed[:administrator_id]
    }
  end

  current_user = Thread.current[:tracer_current_user]
  if current_user
    data[:context].merge!(
        userType: current_user[:type],
        userId:   current_user[:id],
    )
  end

  params = Thread.current[:tracer_params]
  if params
    data[:context].merge!(
        component: params[:controller],
        action:    params[:action],
    )
    data[:params] = params.except(:controller, :action)
  end

  data[:context].merge!(
      environment:   Rails.env,
      rootDirectory: Rails.root,
  )

  data
end
request_log_data() click to toggle source
# File lib/tracer_client/client.rb, line 98
def request_log_data
  request_data
end