Class: Flu::EventFactory
- Inherits:
-
Object
- Object
- Flu::EventFactory
- Defined in:
- lib/flu-rails/event_factory.rb
Instance Method Summary collapse
- #build_entity_change_event(data) ⇒ Object
- #build_event(name, kind, data) ⇒ Object
- #build_manual_event(name, data) ⇒ Object
- #build_request_event(data) ⇒ Object
- #create_data_from_entity_changes(action_name, entity, request_id, request_entity_metadata, changes, user_metadata_lambda, association_columns, ignored_model_changes, flu_overriden_emitter_lambda) ⇒ Object
- #create_data_from_request(request_id, params, request, response, request_start_time, ignored_request_params) ⇒ Object
-
#initialize(configuration) ⇒ EventFactory
constructor
A new instance of EventFactory.
Constructor Details
#initialize(configuration) ⇒ EventFactory
Returns a new instance of EventFactory.
9 10 11 12 13 14 15 |
# File 'lib/flu-rails/event_factory.rb', line 9 def initialize(configuration) @logger = configuration.logger @configuration = configuration @emitter = configuration.application_name @default_ignored_model_changes = configuration.default_ignored_model_changes.map(&:to_s) @default_ignored_request_params = configuration.default_ignored_request_params end |
Instance Method Details
#build_entity_change_event(data) ⇒ Object
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/flu-rails/event_factory.rb', line 27 def build_entity_change_event(data) raise ArgumentError, "data must not be nil" if data.nil? raise ArgumentError, "data must have changes" if !data.has_key?(:changes) || data[:changes].empty? raise ArgumentError, "data must have an action_name" if !data.has_key?(:action_name) || data[:action_name].empty? raise ArgumentError, "data must have an entity_name" if !data.has_key?(:entity_name) || data[:entity_name].empty? name = "#{data[:action_name]} #{data[:entity_name]}" event = build_event(name, :entity_change, data) @logger.debug("Track change: " + JSON.pretty_generate(event)) event end |
#build_event(name, kind, data) ⇒ Object
47 48 49 50 51 52 |
# File 'lib/flu-rails/event_factory.rb', line 47 def build_event(name, kind, data) original_emitter = @emitter overriden_emitter = data[:overriden_emitter]&.strip&.delete(".") final_emitter = overriden_emitter.blank? ? original_emitter : overriden_emitter Event.new(SecureRandom.uuid, final_emitter, kind, name, deep_camelize(data)) end |
#build_manual_event(name, data) ⇒ Object
38 39 40 41 42 43 44 45 |
# File 'lib/flu-rails/event_factory.rb', line 38 def build_manual_event(name, data) raise ArgumentError, "data must not be nil" if data.nil? raise ArgumentError, "data must be a hash" if !data.is_a?(Hash) raise ArgumentError, "name must not be nil or empty" if name.nil? || name.empty? event = build_event(name.to_s, :manual, data) @logger.debug("Track manual: " + JSON.pretty_generate(event)) event end |
#build_request_event(data) ⇒ Object
17 18 19 20 21 22 23 24 25 |
# File 'lib/flu-rails/event_factory.rb', line 17 def build_request_event(data) raise ArgumentError, "data must not be nil" if data.nil? raise ArgumentError, "data must have an action_name" if !data.has_key?(:action_name) || data[:action_name].empty? raise ArgumentError, "data must have an controller_name" if !data.has_key?(:controller_name) || data[:controller_name].empty? name = "request to #{data[:action_name]} #{data[:controller_name]}" event = build_event(name, :request, data) @logger.debug("Track action: #{JSON.pretty_generate(event)}") event end |
#create_data_from_entity_changes(action_name, entity, request_id, request_entity_metadata, changes, user_metadata_lambda, association_columns, ignored_model_changes, flu_overriden_emitter_lambda) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/flu-rails/event_factory.rb', line 54 def create_data_from_entity_changes(action_name, entity, request_id, , changes, , association_columns, ignored_model_changes, flu_overriden_emitter_lambda) { entity_id: entity.id, entity_name: entity.class.name.underscore, overriden_emitter: flu_overriden_emitter_lambda ? entity.instance_exec(&flu_overriden_emitter_lambda) : nil, request_id: request_id, request_metadata: .nil? ? {} : , action_name: action_name, changes: changes.except(*ignored_model_changes).except(*@default_ignored_model_changes), user_metadata: ? entity.instance_exec(&) : {}, associations: extract_associations_from(entity, association_columns) } end |
#create_data_from_request(request_id, params, request, response, request_start_time, ignored_request_params) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/flu-rails/event_factory.rb', line 68 def create_data_from_request(request_id, params, request, response, request_start_time, ignored_request_params) { request_id: request_id, controller_name: params[:controller], action_name: params[:action], path: request.original_fullpath, response_code: response.status, user_agent: request.user_agent, duration: Time.zone.now - request_start_time, params: extract_params(params, ignored_request_params) } end |