Class: Nifty::Event::Converter

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

Overview

Converts appliances into events

Author:

  • Michal Kimle

Class Method Summary collapse

Class Method Details

.convert_appliance(appliance, backend, transfer_method, parameters) ⇒ Nifty::Event

Converts appliance into event

Parameters:

Returns:

Raises:



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/nifty/event/converter.rb', line 13

def self.convert_appliance(appliance, backend, transfer_method, parameters)
  events_module = "Nifty::Events::#{backend.name.demodulize}".constantize

  logger.debug "Converting appliance #{appliance.inspect}"
  event_type = "#{appliance.action}_event".camelize

  fail Nifty::Errors::Event::ConverterError, "No such event type for action #{appliance.action.inspect}" unless events_module.constants.include?(event_type.to_sym)
  event_class = events_module.const_get(event_type)

  fail Nifty::Errors::Event::ConverterError, "Class #{event_class.inspect} doesn't represent an event" unless (event_class.respond_to?('event?') && event_class.event? && event_class.public_instance_methods.include?(:run))

  event = backend.create_event(event_class, appliance, transfer_method, parameters)
  logger.debug "Converted event: #{event.inspect}"

  event
end