strum-esb 0.3.0 → 0.3.1

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
  SHA256:
3
- metadata.gz: 115db6eaed48ee3c437b15fbf8103815214a5cdcc4d0d040960fc6ad73708190
4
- data.tar.gz: dd0f567ec63c61781272ea0931a7348be7df38de6661b5d9da77ccf55e17855d
3
+ metadata.gz: 05de667ab7cd92e53407fee532ff3c7fe063330785aa845d56626da17e05228c
4
+ data.tar.gz: d65051ee4f0b11de008fda22a942758eac27379f54d09ea57a08672916ccf9a5
5
5
  SHA512:
6
- metadata.gz: 3275b5108de6e8f5ac0bf8413d8fb53e0939855c9621fb1ac054b5ae9ecc693ff368a5d55d5e794956f75f038ba106eb4c3452c377b273eda7e064f713b6b605
7
- data.tar.gz: 679fc2e04636143bbfcceb7fba20cb79972475313ed2731977035b1ceb21ca981d77247b03fc668c92d3e809894edeae16e5b74f92afbde55b2d21a77f287c4d
6
+ metadata.gz: 7244c70e6859e665f14524d9747ab5dbe51e2d13cc2e25f41782e6cc4264862ca60eba49a2f88d6292bd19283b8b42c6c1bbd071ea1d88b4e8aeaa5e3a5feed7
7
+ data.tar.gz: 6f846e8c287003b0d70262600b5836148be008c58debad027cf73ae860e51c08c820b267f74956e845a4595e87fbab726909f3005d54ca55befd118177fe603d
data/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
  # Changelog
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [0.3.1]
6
+ ### Removed
7
+ - removed `chain` support
8
+ ### Added
9
+ - `bind_to` can take block for custom bindings
10
+ - `pipeline` and `pipeline_id` can be used as handler params
11
+
5
12
  ## [0.3.0] - 2022-03-14
6
13
  ### Added
7
14
  - `content_type` option to send message by [@valeriia.kolisnyk]
data/Gemfile CHANGED
@@ -10,7 +10,7 @@ gem "rspec", "~> 3"
10
10
  gem "rubocop", "~> 1.15"
11
11
  gem "rubocop-rspec", "~> 2.3.0"
12
12
 
13
- gem "debase", "~> 0.2.4"
13
+ gem "debase", "~> 0.2.5.beta2"
14
14
  gem "ruby-debug-ide", "~> 0.7.2"
15
15
 
16
16
  gem "dry-inflector", "~> 0.2.1"
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- strum-esb (0.3.0)
4
+ strum-esb (0.3.1)
5
5
  bunny (~> 2.15)
6
6
  connection_pool (~> 2.2.2)
7
7
  dry-configurable (~> 0.12.1)
@@ -17,12 +17,12 @@ GEM
17
17
  bunny (2.19.0)
18
18
  amq-protocol (~> 2.3, >= 2.3.1)
19
19
  sorted_set (~> 1, >= 1.0.2)
20
- concurrent-ruby (1.1.9)
20
+ concurrent-ruby (1.1.10)
21
21
  connection_pool (2.2.5)
22
- debase (0.2.4.1)
23
- debase-ruby_core_source (>= 0.10.2)
24
- debase-ruby_core_source (0.10.12)
25
- diff-lcs (1.4.4)
22
+ debase (0.2.5.beta2)
23
+ debase-ruby_core_source (>= 0.10.12)
24
+ debase-ruby_core_source (0.10.14)
25
+ diff-lcs (1.5.0)
26
26
  dry-configurable (0.12.1)
27
27
  concurrent-ruby (~> 1.0)
28
28
  dry-core (~> 0.5, >= 0.5.0)
@@ -30,42 +30,42 @@ GEM
30
30
  concurrent-ruby (~> 1.0)
31
31
  dry-inflector (0.2.1)
32
32
  json (2.6.1)
33
- parallel (1.20.1)
34
- parser (3.0.1.1)
33
+ parallel (1.22.1)
34
+ parser (3.1.1.0)
35
35
  ast (~> 2.4.1)
36
- rainbow (3.0.0)
36
+ rainbow (3.1.1)
37
37
  rake (12.3.3)
38
38
  rbtree (0.4.5)
39
- regexp_parser (2.1.1)
39
+ regexp_parser (2.2.1)
40
40
  rexml (3.2.5)
41
- rspec (3.10.0)
42
- rspec-core (~> 3.10.0)
43
- rspec-expectations (~> 3.10.0)
44
- rspec-mocks (~> 3.10.0)
45
- rspec-core (3.10.1)
46
- rspec-support (~> 3.10.0)
47
- rspec-expectations (3.10.1)
41
+ rspec (3.11.0)
42
+ rspec-core (~> 3.11.0)
43
+ rspec-expectations (~> 3.11.0)
44
+ rspec-mocks (~> 3.11.0)
45
+ rspec-core (3.11.0)
46
+ rspec-support (~> 3.11.0)
47
+ rspec-expectations (3.11.0)
48
48
  diff-lcs (>= 1.2.0, < 2.0)
49
- rspec-support (~> 3.10.0)
50
- rspec-mocks (3.10.2)
49
+ rspec-support (~> 3.11.0)
50
+ rspec-mocks (3.11.0)
51
51
  diff-lcs (>= 1.2.0, < 2.0)
52
- rspec-support (~> 3.10.0)
53
- rspec-support (3.10.2)
54
- rubocop (1.15.0)
52
+ rspec-support (~> 3.11.0)
53
+ rspec-support (3.11.0)
54
+ rubocop (1.26.1)
55
55
  parallel (~> 1.10)
56
- parser (>= 3.0.0.0)
56
+ parser (>= 3.1.0.0)
57
57
  rainbow (>= 2.2.2, < 4.0)
58
58
  regexp_parser (>= 1.8, < 3.0)
59
59
  rexml
60
- rubocop-ast (>= 1.5.0, < 2.0)
60
+ rubocop-ast (>= 1.16.0, < 2.0)
61
61
  ruby-progressbar (~> 1.7)
62
62
  unicode-display_width (>= 1.4.0, < 3.0)
63
- rubocop-ast (1.6.0)
64
- parser (>= 3.0.1.1)
63
+ rubocop-ast (1.16.0)
64
+ parser (>= 3.1.1.0)
65
65
  rubocop-rspec (2.3.0)
66
66
  rubocop (~> 1.0)
67
67
  rubocop-ast (>= 1.1.0)
68
- ruby-debug-ide (0.7.2)
68
+ ruby-debug-ide (0.7.3)
69
69
  rake (>= 0.8.1)
70
70
  ruby-progressbar (1.11.0)
71
71
  serverengine (2.1.1)
@@ -82,14 +82,14 @@ GEM
82
82
  rbtree
83
83
  set (~> 1.0)
84
84
  thor (1.2.1)
85
- unicode-display_width (2.0.0)
85
+ unicode-display_width (2.1.0)
86
86
 
87
87
  PLATFORMS
88
88
  ruby
89
89
 
90
90
  DEPENDENCIES
91
91
  bundler (~> 2.1.4)
92
- debase (~> 0.2.4)
92
+ debase (~> 0.2.5.beta2)
93
93
  dry-inflector (~> 0.2.1)
94
94
  rspec (~> 3)
95
95
  rubocop (~> 1.15)
@@ -17,18 +17,26 @@ module Strum
17
17
  module ClassMethods
18
18
  def bind_to(queue, message_type, message_binding, handler = nil)
19
19
  bindings ||= (queue_opts && queue_opts[:bindings]) || {}
20
- bindings[message_type] ||= []
21
- bindings[message_type] << message_binding
20
+
21
+ if block_given?
22
+ yield(bindings)
23
+ else
24
+ bindings[message_type] ||= []
25
+ bindings[message_type] << message_binding
26
+ end
27
+
22
28
  from_queue queue, bindings: bindings
29
+ handlers[handler_key(message_type, message_binding)] = handler.to_s if handler
30
+ end
31
+
32
+ def handler_key(message_type, message_binding)
23
33
  _, *msg = Strum::Esb::Functions.public_send("#{message_type}_explain", message_binding)
24
- @handlers ||= {}
25
34
  params = msg.map{ |param| param&.to_s.gsub(/[^a-zA-Z0-9]/, "_")&.downcase }
26
- handler_key = ([message_type] + params).join("-")
27
- @handlers[handler_key] = handler.to_s if handler
35
+ ([message_type] + params).join("-")
28
36
  end
29
37
 
30
38
  def handlers
31
- @handlers || {}
39
+ @handlers ||= {}
32
40
  end
33
41
 
34
42
  def protobuf_service(service)
@@ -40,24 +48,23 @@ module Strum
40
48
  end
41
49
  end
42
50
 
51
+ def header(metadata, key)
52
+ (metadata[:headers] && metadata[:headers][key])&.to_s&.gsub(/[^a-zA-Z0-9]/, "_")&.downcase
53
+ end
54
+
43
55
  def work_with_params(deserialized_msg, delivery_info, metadata)
44
56
  Strum::Esb.config.before_handler_hooks.each { |hook| hook.call(deserialized_msg, delivery_info, metadata) }
45
57
 
46
- snake_case_modify = ->(string) { string.nil? ? nil : string&.to_s.gsub(/[^a-zA-Z0-9]/, "_")&.downcase }
47
- parse_header = ->(string) { metadata[:headers] && metadata[:headers][string] }
48
- header = parse_header >> snake_case_modify
49
-
50
- action = header.call("action")
51
- resource = header.call("resource")
52
- event = header.call("event")
53
- state = header.call("state")
54
- info = header.call("info")
55
- notice = header.call("notice")
56
- Thread.current[:chain] = header.call("chain")
57
- Thread.current[:pipeline] = header.call("pipeline")
58
- Thread.current[:pipeline_id] = header.call("pipeline-id")
58
+ action = header(metadata, "action")
59
+ resource = header(metadata, "resource")
60
+ event = header(metadata, "event")
61
+ state = header(metadata, "state")
62
+ info = header(metadata, "info")
63
+ notice = header(metadata, "notice")
64
+ pipeline = Thread.current[:pipeline] = header(metadata, "pipeline")
65
+ pipeline_id = Thread.current[:pipeline_id] = header(metadata, "pipeline-id")
59
66
 
60
- after_headers_hook
67
+ after_headers_hook(binding)
61
68
 
62
69
  methods_names = if action
63
70
  action_handler_methods(action, resource)
@@ -92,7 +99,7 @@ module Strum
92
99
  method_params = method(method_name)
93
100
  .parameters
94
101
  .map { |param| _, param_name = param; param_name }
95
- .then { |m| m & %I[action resource event state info chain] }
102
+ .then { |m| m & %I[action resource event state info pipeline pipeline_id] }
96
103
  handler_params = method_params.each_with_object({}) { |i, res| res[i] = eval(i.to_s); }
97
104
  logger.info("Handler #{method_name} found. Payload: #{payload}")
98
105
  handler_params.count.positive? ? send(method_name, payload, handler_params) : send(method_name, payload)
@@ -106,7 +113,7 @@ module Strum
106
113
  Strum::Esb.config.after_handler_hooks.each { |hook| hook.call(deserialized_msg, delivery_info, metadata, payload, error) }
107
114
  end
108
115
 
109
- def after_headers_hook; end
116
+ def after_headers_hook(bind); end
110
117
 
111
118
  private
112
119
 
@@ -144,7 +151,7 @@ module Strum
144
151
  result << "notice_#{notice}"
145
152
  result << "notice_handler"
146
153
  result
147
- end
154
+ end
148
155
  end
149
156
  end
150
157
  end
@@ -17,10 +17,6 @@ module Strum
17
17
  properties[:headers] = {} unless properties[:headers].is_a?(Hash)
18
18
  properties[:headers]["pipeline"] ||= Thread.current[:pipeline] if Thread.current[:pipeline]
19
19
  properties[:headers]["pipeline-id"] ||= Thread.current[:pipeline_id] if Thread.current[:pipeline_id]
20
- if (chain = Thread.current[:chain])
21
- payload["chain"] ||= chain
22
- headers["chain"] ||= chain
23
- end
24
20
 
25
21
  payload, valid_payload = Strum::Esb.config.serializer.serialize(payload, properties[:content_type])
26
22
  unless valid_payload
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Strum
4
4
  module Esb
5
- VERSION = "0.3.0"
5
+ VERSION = "0.3.1"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strum-esb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Serhiy Nazarov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-03-17 00:00:00.000000000 Z
11
+ date: 2022-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bunny