strum-service 0.0.1 → 0.0.2
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/.gitlab-ci.yml +3 -0
- data/.rubocop.yml +4 -7
- data/Gemfile.lock +1 -1
- data/lib/strum/service.rb +40 -26
- data/lib/strum/service/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0710157868640a5904ef6996d2e13f1b91cdcca1025b6a0b95b9230853ba3609'
|
4
|
+
data.tar.gz: 5d8a21d6d8fb7751e780881cad8ba3f7a02556868b50a82e99455f41b98166c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8af13f2c86dbea7ba37f27a32e1076d1a14f0122682dc8e5e27f1f4ead683545a2acc03fc1b4a071c5942fdadf1b8f2967a6f8f246f75f55432fca051182396a
|
7
|
+
data.tar.gz: aae52d447451bdab8b023f529802af7eee7d95ee5eb6191a4e330782a4838ea0d79cdd3c04c54affad0136e0a2cc0fc8442eafc4416f6d57b221558bdab079e3
|
data/.gitlab-ci.yml
ADDED
data/.rubocop.yml
CHANGED
@@ -12,18 +12,15 @@ Layout/IndentationConsistency:
|
|
12
12
|
Enabled: true
|
13
13
|
EnforcedStyle: indented_internal_methods
|
14
14
|
|
15
|
-
# Two spaces, no tabs (for indentation).
|
16
|
-
Layout/IndentationWidth:
|
17
|
-
Enabled: true
|
18
|
-
|
19
15
|
# Check quotes usage according to lint rule below.
|
20
16
|
Style/StringLiterals:
|
21
17
|
Enabled: true
|
22
18
|
EnforcedStyle: double_quotes
|
23
19
|
|
24
|
-
|
25
|
-
Max: 120
|
20
|
+
Layout/LineLength:
|
26
21
|
IgnoredPatterns: ['\A#']
|
27
22
|
|
28
23
|
Metrics/BlockLength:
|
29
|
-
|
24
|
+
IgnoredMethods:
|
25
|
+
- describe
|
26
|
+
- context
|
data/Gemfile.lock
CHANGED
data/lib/strum/service.rb
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
require "strum/service/version"
|
4
4
|
|
5
5
|
module Strum
|
6
|
-
|
6
|
+
# Strum service
|
7
|
+
module Service # rubocop:disable Metrics/ModuleLength
|
7
8
|
class Failure < StandardError; end
|
8
9
|
|
9
10
|
def self.included(base)
|
@@ -14,17 +15,17 @@ module Strum
|
|
14
15
|
|
15
16
|
# Internal: Interactor class methods.
|
16
17
|
module ClassMethods
|
17
|
-
def call(
|
18
|
-
new(
|
18
|
+
def call(main_input, **args, &block)
|
19
|
+
new(main_input, args).execute(&block)
|
19
20
|
end
|
20
21
|
end
|
21
22
|
|
22
23
|
# Instance methods
|
23
|
-
def initialize(
|
24
|
+
def initialize(main_input, **args)
|
24
25
|
self.strum_errors = {}
|
25
26
|
self.service_handlers = { on: {}, success: {}, failure: {} }
|
26
27
|
self.outputs = {}
|
27
|
-
self.inputs = args.merge(default:
|
28
|
+
self.inputs = args.merge(default: main_input)
|
28
29
|
self._inputs = inputs.dup.freeze
|
29
30
|
end
|
30
31
|
|
@@ -105,16 +106,21 @@ module Strum
|
|
105
106
|
end
|
106
107
|
# rubocop: enable Style/OptionalArguments
|
107
108
|
|
109
|
+
# def add_error(field, value)
|
110
|
+
# if field.is_a?(Array)
|
111
|
+
# field.each do |key|
|
112
|
+
# value.is_a?(Array) ? value.each { |v| add_error(key, v) } : add_error(key, value)
|
113
|
+
# add_error(key, value.is_a?(Array) ? value.first : value)
|
114
|
+
# end
|
115
|
+
# else
|
116
|
+
# strum_errors[field] ||= []
|
117
|
+
# strum_errors[field] = strum_errors[field] + Array(value)
|
118
|
+
# end
|
119
|
+
# end
|
120
|
+
|
108
121
|
def add_error(field, value)
|
109
|
-
|
110
|
-
|
111
|
-
value.is_a?(Array) ? value.each { |v| add_error(key, v) } : add_error(key, value)
|
112
|
-
add_error(key, value.is_a?(Array) ? value.first : value)
|
113
|
-
end
|
114
|
-
else
|
115
|
-
strum_errors[field] ||= []
|
116
|
-
strum_errors[field] = strum_errors[field] + Array(value)
|
117
|
-
end
|
122
|
+
strum_errors[field] ||= []
|
123
|
+
strum_errors[field] = strum_errors[field] + Array(value)
|
118
124
|
end
|
119
125
|
|
120
126
|
def add_errors(errors)
|
@@ -146,16 +152,14 @@ module Strum
|
|
146
152
|
end
|
147
153
|
|
148
154
|
def sliced_list(*keys)
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
155
|
+
add_error(:input, :must_be_array) && retuen unless input.is_a?(Array)
|
156
|
+
|
157
|
+
self.input = input.map do |item|
|
158
|
+
if item.is_a?(Hash)
|
159
|
+
item.slice(*keys)
|
160
|
+
else
|
161
|
+
add_error(:input_subitem, :must_be_hash)
|
156
162
|
end
|
157
|
-
else
|
158
|
-
add_error(:input, :must_be_array)
|
159
163
|
end
|
160
164
|
end
|
161
165
|
|
@@ -171,10 +175,20 @@ module Strum
|
|
171
175
|
key
|
172
176
|
end
|
173
177
|
|
178
|
+
def handler_key
|
179
|
+
((outputs.keys << nil) & service_handlers[:success].keys).first
|
180
|
+
end
|
181
|
+
|
182
|
+
def handler
|
183
|
+
service_handlers[:success][handler_key]
|
184
|
+
end
|
185
|
+
|
174
186
|
def valid_result
|
175
|
-
|
176
|
-
|
177
|
-
|
187
|
+
if handler.is_a?(Proc)
|
188
|
+
handler.call(outputs[handler_key] || outputs[:default])
|
189
|
+
else
|
190
|
+
outputs[handler_key] || outputs[:default]
|
191
|
+
end
|
178
192
|
end
|
179
193
|
|
180
194
|
def invalid_result
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: strum-service
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Serhiy Nazarov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Strum Service
|
14
14
|
email:
|
@@ -18,6 +18,7 @@ extensions: []
|
|
18
18
|
extra_rdoc_files: []
|
19
19
|
files:
|
20
20
|
- ".gitignore"
|
21
|
+
- ".gitlab-ci.yml"
|
21
22
|
- ".rspec"
|
22
23
|
- ".rubocop.yml"
|
23
24
|
- ".travis.yml"
|