Module: CanvasSync::Concerns::LiveEventSync
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/canvas_sync/concerns/live_event_sync.rb
Constant Summary collapse
- VALID_CONFIG_KEYS =
%i[event_prefix key].freeze
Class Method Summary collapse
- .lookup_event_model(event_model) ⇒ Object
- .register_model(model) ⇒ Object
- .split_event_name(event_name) ⇒ Object
Instance Method Summary collapse
Class Method Details
.lookup_event_model(event_model) ⇒ Object
13 14 15 16 17 18 19 |
# File 'lib/canvas_sync/concerns/live_event_sync.rb', line 13 def self.lookup_event_model(event_model) self.registered_models.each do |model| event_prefix = model.live_events_config[:event_prefix].presence || model.name.underscore return model if event_model.to_s == event_prefix.to_s end nil end |
.register_model(model) ⇒ Object
9 10 11 |
# File 'lib/canvas_sync/concerns/live_event_sync.rb', line 9 def self.register_model(model) self.registered_models << model end |
.split_event_name(event_name) ⇒ Object
21 22 23 24 |
# File 'lib/canvas_sync/concerns/live_event_sync.rb', line 21 def self.split_event_name(event_name) model, _, subtype = event_name.rpartition('_') [model.to_sym, subtype.to_sym] end |
Instance Method Details
#current_live_event ⇒ Object
91 92 93 |
# File 'lib/canvas_sync/concerns/live_event_sync.rb', line 91 def current_live_event Thread.current[:cs_current_live_event] end |
#process_live_event(event_type, payload, metadata) ⇒ Object
95 96 97 98 99 100 101 102 103 |
# File 'lib/canvas_sync/concerns/live_event_sync.rb', line 95 def process_live_event(event_type, payload, ) if self.has_attribute?(:workflow_state) && payload['workflow_state'].present? && payload['workflow_state'] == 'deleted' # API will respond with 404, so just update the workflow_state update(workflow_state: payload['workflow_state']) else api_response = request_from_api assign_from_api_params(api_response) end end |