Class: RisingDragon::SQS::Emitter
- Inherits:
-
Object
- Object
- RisingDragon::SQS::Emitter
- Defined in:
- lib/rising_dragon/sqs/emitter.rb
Instance Method Summary collapse
- #emit_event(event) ⇒ Object
- #emit_sns_msg(body) ⇒ Object
- #event_from_json(body) ⇒ Object
- #ignore(event_name) ⇒ Object
-
#initialize ⇒ Emitter
constructor
A new instance of Emitter.
- #list ⇒ Object
- #register(event_name, handler_class) ⇒ Object
- #unregister(event_name) ⇒ Object
Constructor Details
#initialize ⇒ Emitter
Returns a new instance of Emitter.
6 7 8 |
# File 'lib/rising_dragon/sqs/emitter.rb', line 6 def initialize @handlers = {} end |
Instance Method Details
#emit_event(event) ⇒ Object
36 37 38 39 40 41 |
# File 'lib/rising_dragon/sqs/emitter.rb', line 36 def emit_event(event) handler = @handlers[event.type] handler.new.handle(event) if handler nil end |
#emit_sns_msg(body) ⇒ Object
54 55 56 57 |
# File 'lib/rising_dragon/sqs/emitter.rb', line 54 def emit_sns_msg(body) event = event_from_json(body) emit_event(event) end |
#event_from_json(body) ⇒ Object
43 44 45 46 47 48 49 50 51 52 |
# File 'lib/rising_dragon/sqs/emitter.rb', line 43 def event_from_json(body) msg = JSON.parse(body["Message"]) id = msg["id"] type = msg["type"] = Time.at(msg["timestamp"] / 1000.0) data = msg["data"] ::RisingDragon::Event.new(id: id, type: type, timestamp: , data: data) end |
#ignore(event_name) ⇒ Object
28 29 30 |
# File 'lib/rising_dragon/sqs/emitter.rb', line 28 def ignore(event_name) @handlers.delete(event_name) end |
#list ⇒ Object
32 33 34 |
# File 'lib/rising_dragon/sqs/emitter.rb', line 32 def list @handlers.keys end |
#register(event_name, handler_class) ⇒ Object
10 11 12 13 14 15 16 17 18 |
# File 'lib/rising_dragon/sqs/emitter.rb', line 10 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) ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/rising_dragon/sqs/emitter.rb', line 20 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 |