class RisingDragon::SQS::Emitter

Public Class Methods

new() click to toggle source
# File lib/rising_dragon/sqs/emitter.rb, line 4
def initialize
  @handlers = {}
end

Public Instance Methods

emit_event(event) click to toggle source
# File lib/rising_dragon/sqs/emitter.rb, line 38
def emit_event(event)
  handler = @handlers[event.type]
  raise ::RisingDragon::UnRegisterEvent, "event_type: `#{event.type}` is unregistered" unless handler

  handler.new.handle(event)

  nil
end
emit_sns_msg(body) click to toggle source
# File lib/rising_dragon/sqs/emitter.rb, line 58
def emit_sns_msg(body)
  event = event_from_json(body)
  emit_event(event)
end
event_from_json(body) click to toggle source
# File lib/rising_dragon/sqs/emitter.rb, line 47
def event_from_json(body)
  msg = JSON.parse(body['Message'])

  id = msg['id']
  type = msg['type']
  timestamp = Time.at(msg['timestamp'] / 1000.0)
  data = msg['data']

  ::RisingDragon::Event.new(id: id, type: type, timestamp: timestamp, data: data)
end
ignore(event_name) click to toggle source
# File lib/rising_dragon/sqs/emitter.rb, line 26
def ignore(event_name)
  unless event_name.is_a?(String)
    raise "event_name must be String, but it's #{event_name.class}. event_name: #{event_name}"
  end

  @handlers[event_name] = ::RisingDragon::SQS::EmptyHandler
end
list() click to toggle source
# File lib/rising_dragon/sqs/emitter.rb, line 34
def list
  @handlers.keys
end
register(event_name, handler_class) click to toggle source
# File lib/rising_dragon/sqs/emitter.rb, line 8
def register(event_name, handler_class)
  unless event_name.is_a?(String)
    raise "event_name must be String, but it's #{event_name.class}. event_name: #{event_name}"
  end
  if @handlers[event_name]
    raise "RisingDragon::SQS::Emitter accepts only one callback per event. event_name: #{event_name}"
  end
  @handlers[event_name] = handler_class
end
unregister(event_name) click to toggle source
# File lib/rising_dragon/sqs/emitter.rb, line 18
def unregister(event_name)
  unless event_name.is_a?(String)
    raise "event_name must be String, but it's #{event_name.class}. event_name: #{event_name}"
  end

  @handlers.delete(event_name)
end