Class: RemarkAnalytics::Event

Inherits:
Object
  • Object
show all
Defined in:
lib/remark_analytics/event.rb

Overview

This class handles the event to emit/post via job

Class Method Summary collapse

Class Method Details

.class_exists?(class_name) ⇒ Boolean

Returns:

  • (Boolean)


48
49
50
51
52
53
# File 'lib/remark_analytics/event.rb', line 48

def self.class_exists?(class_name)
  klass = Module.const_get(class_name)
  klass.is_a?(Class)
rescue NameError
  false
end

.emit(event_parameters) ⇒ Object



6
7
8
9
# File 'lib/remark_analytics/event.rb', line 6

def self.emit(event_parameters)
  event_params = prepare_post_parameters(event_parameters)
  post_event(event_params)
end

.post_event(event_params) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/remark_analytics/event.rb', line 35

def self.post_event(event_params)
  if Rails.env.development? || Rails.env.test?
    begin
      RemarkAnalytics::Jobs::PostEventJob.perform_now(event_params)
    rescue RemarkAnalytics::SecretsMissingError => _e
      # to pass tests
    end
    return
  end

  RemarkAnalytics::Jobs::PostEventJob.perform_later(event_params)
end

.prepare_post_parameters(event_parameters) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/remark_analytics/event.rb', line 11

def self.prepare_post_parameters(event_parameters)
  # mix up the event params with other required data
  result = {}
  result[:name] = event_parameters[:name].presence
  result[:resource_type] = event_parameters[:resource_type].presence
  result[:resource_id] = event_parameters[:resource_id].presence
  result[:data] = event_parameters[:data].presence || {}
  result[:application_version] =
    event_parameters[:application_version].presence || RemarkAnalytics::VERSION
  result[:occured_at] = event_parameters[:occured_at].presence || Time.zone.now
  result[:tenant_name] = event_parameters[:tenant_name].presence ||
    Rails.application.secrets.try(:REMARK_ANALYTICS_TENANT_NAME)

  if result[:tenant_name].blank? && Object.const_defined?('VP_SETTINGS')
    result[:tenant_name] = VP_SETTINGS[:tenant]
  end
  if result[:tenant_name].blank? && RemarkAnalytics::Event.class_exists?('Admin::Setting')
    result[:tenant_name] = Admin::Setting.all[:tenant]
  end

  # validate params at the other side (analytics api endoint)
  result
end