mumukit-nuntius 3.1.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 240a537c4d02598e868bc20aeb2c41a4b506301a
4
- data.tar.gz: db3ea382c66d1acee663f51ef85ff3af45900c6c
3
+ metadata.gz: 3fc04550bade975d33455bb1dd1d1cd0343ed762
4
+ data.tar.gz: c250ec41bad406608c596bf10f7e5e68e46f3afc
5
5
  SHA512:
6
- metadata.gz: 1d038331ed123b8035422d7dabed0f59a77cd64d74c1b796c125f119b30982116c232cc26f5796c6c137d908e5159103e4f18b731fab5d0be89384223de2b496
7
- data.tar.gz: 8bc6ea3e1b4148ce4d5db1a315b7c5181a302f1f1124931e7ec3026c1d0f891b6e7ac2ae684348dd37f1cc4e7a698240c3082566aa654095efc8ff3449524c14
6
+ metadata.gz: bdbe69d8100e63d9d6e62fd5c0df77e0b2c15f5d092de708336584960dd73f942801f1cf77f5db9ee58ffba1b9ec291e9b94cc542310daec766230b5794f28ce
7
+ data.tar.gz: 78e9d2ed8547cb865f580878376b978a6a92e97881c270f09842ca6c0eac0d01d001e0d247b287c91ce5115be5732719ba94e5b21c8b989d1b4b5bfdbc295301
@@ -1,46 +1,58 @@
1
1
  module Mumukit::Nuntius::EventConsumer
2
- module HandlerModule
3
- def define_handler(event, &block)
4
- handler = Class.new do
5
- define_singleton_method :execute!, &block
6
- end
7
- const_set(event, handler)
2
+ class Builder
3
+ def initialize
4
+ @handlers = {}
5
+ end
6
+
7
+ def event(key, &block)
8
+ @handlers[key] = block
9
+ end
10
+
11
+ def build
12
+ @handlers
8
13
  end
9
14
  end
10
15
 
11
16
  class << self
12
- def start(name = Mumukit::Nuntius.config.app_name)
13
- Mumukit::Nuntius::Consumer.start "#{name}-events", 'events' do |_delivery_info, properties, body|
14
- handle_event(name, properties, body)
15
- end
17
+ @@handlers = {}
18
+
19
+ def handle(&block)
20
+ register_handlers! Builder.new.tap { |it| it.instance_eval(&block) }.build
16
21
  end
17
22
 
18
- def handle_event(name, properties, body)
19
- return if body[:data][:sender] == Mumukit::Nuntius.config.app_name
23
+ def register_handlers!(handlers)
24
+ @@handlers = handlers
25
+ end
20
26
 
21
- choose_event(name, properties).execute!(body[:data].except(:sender))
22
- rescue NoMethodError => e
23
- log_exception(name, properties, e)
24
- rescue NameError => _
25
- log_unknown_event(name, properties)
26
- rescue => e
27
- log_exception(name, properties, e)
27
+ def start!
28
+ queue_name = "#{Mumukit::Nuntius.config.app_name}-events"
29
+ Mumukit::Nuntius::Consumer.start queue_name, 'events' do |_delivery_info, properties, body|
30
+ handle_event!(properties, body)
31
+ end
28
32
  end
29
33
 
30
- def choose_event(name, properties)
31
- event_name(name, properties).constantize
34
+ def handles?(event)
35
+ @@handlers[event].present?
32
36
  end
33
37
 
34
- def event_name(name, properties)
35
- "#{name.capitalize}::Event::#{properties[:type]}"
38
+ def handle_event!(properties, body)
39
+ return if body[:data][:sender] == Mumukit::Nuntius.config.app_name
40
+ event = properties[:type]
41
+ if handles? event
42
+ @@handlers[event].call body[:data].except(:sender)
43
+ else
44
+ log_unknown_event event
45
+ end
46
+ rescue => e
47
+ log_exception(event, e)
36
48
  end
37
49
 
38
- def log_unknown_event(name, properties)
39
- Mumukit::Nuntius::Logger.info "#{event_name(name, properties)} does not exists."
50
+ def log_unknown_event(event)
51
+ Mumukit::Nuntius::Logger.info "Unhandled #{event} does not exists."
40
52
  end
41
53
 
42
- def log_exception(name, properties, e)
43
- Mumukit::Nuntius::Logger.error "Failed to proccess #{event_name(name, properties)}, error was: #{e}"
54
+ def log_exception(event, e)
55
+ Mumukit::Nuntius::Logger.error "Failed to proccess #{event}, error was: #{e}"
44
56
  end
45
57
  end
46
58
  end
@@ -1,5 +1,5 @@
1
1
  module Mumukit
2
2
  module Nuntius
3
- VERSION = '3.1.0'
3
+ VERSION = '4.0.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mumukit-nuntius
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Agustin Pina