mumukit-nuntius 3.1.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
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