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 +4 -4
- data/lib/mumukit/nuntius/event_consumer.rb +39 -27
- data/lib/mumukit/nuntius/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3fc04550bade975d33455bb1dd1d1cd0343ed762
|
|
4
|
+
data.tar.gz: c250ec41bad406608c596bf10f7e5e68e46f3afc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bdbe69d8100e63d9d6e62fd5c0df77e0b2c15f5d092de708336584960dd73f942801f1cf77f5db9ee58ffba1b9ec291e9b94cc542310daec766230b5794f28ce
|
|
7
|
+
data.tar.gz: 78e9d2ed8547cb865f580878376b978a6a92e97881c270f09842ca6c0eac0d01d001e0d247b287c91ce5115be5732719ba94e5b21c8b989d1b4b5bfdbc295301
|
|
@@ -1,46 +1,58 @@
|
|
|
1
1
|
module Mumukit::Nuntius::EventConsumer
|
|
2
|
-
|
|
3
|
-
def
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
|
19
|
-
|
|
23
|
+
def register_handlers!(handlers)
|
|
24
|
+
@@handlers = handlers
|
|
25
|
+
end
|
|
20
26
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
|
31
|
-
|
|
34
|
+
def handles?(event)
|
|
35
|
+
@@handlers[event].present?
|
|
32
36
|
end
|
|
33
37
|
|
|
34
|
-
def
|
|
35
|
-
|
|
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(
|
|
39
|
-
Mumukit::Nuntius::Logger.info "#{
|
|
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(
|
|
43
|
-
Mumukit::Nuntius::Logger.error "Failed to proccess #{
|
|
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
|