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