bbservices 1.0.1 → 2.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/bbservices.rb +2 -2
- data/lib/bbservices/service.rb +205 -0
- data/lib/bbservices/service_provider.rb +42 -0
- metadata +4 -4
- data/lib/service.rb +0 -198
- data/lib/service_provider.rb +0 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48cb6bb977e6fad5a1efd70a3dadab0366860eaa84ac41749877acc06017ae2c
|
4
|
+
data.tar.gz: 38a78f0ae7a47fe6f57a35724e55b9fc4e55131af57a222c099b5a1fb1d98095
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2d40a76870f43ee2578c50fbf40411dafb76e6fe79aafe3cdbf9bc272b4b72852c6c5e8668bb7554ad23a09904742f140eaae3f7c934c243ee0c33c67bfbd12
|
7
|
+
data.tar.gz: 1a45585761e068e611fe125c96b7386f7f1872047b610ae793da213698de60e025d9f0ed63514c26b1afbb96d64d045132f6b329335238a72a0054bece284030
|
data/lib/bbservices.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
require_relative 'service'
|
2
|
-
require_relative 'service_provider'
|
1
|
+
require_relative 'bbservices/service'
|
2
|
+
require_relative 'bbservices/service_provider'
|
@@ -0,0 +1,205 @@
|
|
1
|
+
|
2
|
+
module BBServices
|
3
|
+
##
|
4
|
+
# The base class for all services. Handles the basic run loop and general accessors
|
5
|
+
class Service
|
6
|
+
attr_reader :params, :object, :errors
|
7
|
+
|
8
|
+
##
|
9
|
+
# Creates a new service class, then calls run
|
10
|
+
def self.run(params = nil, &block)
|
11
|
+
self.new(params).tap do |service|
|
12
|
+
service.run(&block)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
##
|
17
|
+
# Creates a new service class, then calls run!
|
18
|
+
def self.run!(params = nil, &block)
|
19
|
+
self.new(params).tap do |service|
|
20
|
+
service.run!(&block)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
##
|
25
|
+
# Sets the service class
|
26
|
+
def self.service_class(klass)
|
27
|
+
@service_class = klass
|
28
|
+
end
|
29
|
+
|
30
|
+
##
|
31
|
+
# Gets the service class
|
32
|
+
def self.get_service_class
|
33
|
+
@service_class
|
34
|
+
end
|
35
|
+
|
36
|
+
def initialize(params = nil)
|
37
|
+
##
|
38
|
+
# The object which will be assigned to the service
|
39
|
+
@object = nil
|
40
|
+
|
41
|
+
##
|
42
|
+
# The state of success, was the service successful
|
43
|
+
@successful = false
|
44
|
+
|
45
|
+
##
|
46
|
+
# The state of the run, has the service being ran
|
47
|
+
@ran = false
|
48
|
+
|
49
|
+
##
|
50
|
+
# The errors which are returned by the service
|
51
|
+
@errors = nil
|
52
|
+
|
53
|
+
##
|
54
|
+
# The service class stored on the instance. This will override the
|
55
|
+
# service class set statically
|
56
|
+
@service_class = nil
|
57
|
+
|
58
|
+
##
|
59
|
+
# The params passed to the resource
|
60
|
+
@params = params
|
61
|
+
end
|
62
|
+
|
63
|
+
##
|
64
|
+
# This runs the safe version of the service. E.g. Will rescue on exception
|
65
|
+
# and set the error attribute
|
66
|
+
def run(&block)
|
67
|
+
set_ran
|
68
|
+
begin
|
69
|
+
initialize_service
|
70
|
+
internal_validation
|
71
|
+
run_service
|
72
|
+
rescue StandardError => e
|
73
|
+
set_successful(false)
|
74
|
+
set_error(e)
|
75
|
+
ensure
|
76
|
+
call_block(&block)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
##
|
81
|
+
# This runs the unsafe version of the service. E.g. Exceptions will be thrown
|
82
|
+
def run!(&block)
|
83
|
+
set_ran
|
84
|
+
begin
|
85
|
+
initialize_service
|
86
|
+
internal_validation
|
87
|
+
run_service!
|
88
|
+
call_block(&block)
|
89
|
+
rescue StandardError => e
|
90
|
+
set_successful(false)
|
91
|
+
set_error(e)
|
92
|
+
raise e
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def set_service_class(value)
|
97
|
+
@service_class = value
|
98
|
+
end
|
99
|
+
|
100
|
+
##
|
101
|
+
# Sets the service_class instance variable
|
102
|
+
def service_class=(value)
|
103
|
+
set_service_class(value)
|
104
|
+
end
|
105
|
+
|
106
|
+
##
|
107
|
+
# Gets the service_class. This will go instance first, then static
|
108
|
+
def service_class
|
109
|
+
@service_class || self.class.get_service_class
|
110
|
+
end
|
111
|
+
|
112
|
+
def set_params(value)
|
113
|
+
@params = value
|
114
|
+
end
|
115
|
+
|
116
|
+
def params=(value)
|
117
|
+
set_params(value)
|
118
|
+
end
|
119
|
+
|
120
|
+
def param_for(key)
|
121
|
+
param(key)
|
122
|
+
end
|
123
|
+
|
124
|
+
def param(key)
|
125
|
+
@params[key] if @params
|
126
|
+
end
|
127
|
+
|
128
|
+
def ran?
|
129
|
+
@ran
|
130
|
+
end
|
131
|
+
|
132
|
+
def succeeded?
|
133
|
+
(@successful && !errors?)
|
134
|
+
end
|
135
|
+
|
136
|
+
def successful?
|
137
|
+
(@successful && !errors?)
|
138
|
+
end
|
139
|
+
|
140
|
+
def failed?
|
141
|
+
!succeeded?
|
142
|
+
end
|
143
|
+
|
144
|
+
def success(&block)
|
145
|
+
call_block(&block) if succeeded?
|
146
|
+
end
|
147
|
+
|
148
|
+
def failure(&block)
|
149
|
+
call_block(&block) if failed?
|
150
|
+
end
|
151
|
+
|
152
|
+
def errors?
|
153
|
+
!!(@errors && @errors.length.positive?)
|
154
|
+
end
|
155
|
+
|
156
|
+
def params?
|
157
|
+
!!@params
|
158
|
+
end
|
159
|
+
|
160
|
+
protected
|
161
|
+
|
162
|
+
def initialize_service() end
|
163
|
+
|
164
|
+
def run_service
|
165
|
+
set_successful
|
166
|
+
set_object(nil)
|
167
|
+
end
|
168
|
+
|
169
|
+
def run_service!
|
170
|
+
set_successful
|
171
|
+
set_object(nil)
|
172
|
+
end
|
173
|
+
|
174
|
+
def set_object(obj)
|
175
|
+
@object = obj
|
176
|
+
end
|
177
|
+
|
178
|
+
def set_error(error)
|
179
|
+
set_errors([]) unless @errors
|
180
|
+
@errors << error
|
181
|
+
end
|
182
|
+
|
183
|
+
def set_errors(errors)
|
184
|
+
@errors = errors
|
185
|
+
end
|
186
|
+
|
187
|
+
def set_successful(successful = true)
|
188
|
+
@successful = successful
|
189
|
+
end
|
190
|
+
|
191
|
+
def set_ran(ran = true)
|
192
|
+
@ran = ran
|
193
|
+
end
|
194
|
+
|
195
|
+
private
|
196
|
+
|
197
|
+
def internal_validation
|
198
|
+
set_params({}) unless params?
|
199
|
+
end
|
200
|
+
|
201
|
+
def call_block
|
202
|
+
yield(self) if block_given?
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
|
2
|
+
module BBServices
|
3
|
+
##
|
4
|
+
#
|
5
|
+
module ServiceProvider
|
6
|
+
def self.included(base)
|
7
|
+
base.extend ClassMethods
|
8
|
+
base.class_eval do
|
9
|
+
|
10
|
+
##
|
11
|
+
# Creates a brand new service of a given type
|
12
|
+
def service(service_type, service_params = {})
|
13
|
+
service_type.new.tap do |service|
|
14
|
+
service.set_params(service_params)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
##
|
19
|
+
# Creates and runs a brand new service using the safe method
|
20
|
+
def run_service(service_type, service_params = {}, &block)
|
21
|
+
service(service_type, service_params).tap do |service|
|
22
|
+
service.set_service_class(service_type)
|
23
|
+
service.run(&block)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
##
|
28
|
+
# Creates and runs a brand new service using the unsafe method
|
29
|
+
def run_service!(service_type, service_params = {}, &block)
|
30
|
+
service(service_type, service_params).tap do |service|
|
31
|
+
service.set_service_class(service_type)
|
32
|
+
service.run!(&block)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
module ClassMethods
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bbservices
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stuart Farnaby, Big Bear Studios
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -59,8 +59,8 @@ extensions: []
|
|
59
59
|
extra_rdoc_files: []
|
60
60
|
files:
|
61
61
|
- lib/bbservices.rb
|
62
|
-
- lib/service.rb
|
63
|
-
- lib/service_provider.rb
|
62
|
+
- lib/bbservices/service.rb
|
63
|
+
- lib/bbservices/service_provider.rb
|
64
64
|
homepage: https://gitlab.com/big-bear-studios-open-source/bbservices
|
65
65
|
licenses:
|
66
66
|
- MIT
|
data/lib/service.rb
DELETED
@@ -1,198 +0,0 @@
|
|
1
|
-
|
2
|
-
##
|
3
|
-
# The base class for all services. Handles the basic run loop and general accessors
|
4
|
-
class Service
|
5
|
-
attr_reader :params, :object, :errors
|
6
|
-
|
7
|
-
##
|
8
|
-
# Creates a new service class, then calls run
|
9
|
-
def self.run(params = nil, &block)
|
10
|
-
self.new(params).tap do |service|
|
11
|
-
service.run(&block)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
##
|
16
|
-
# Creates a new service class, then calls run!
|
17
|
-
def self.run!(params = nil, &block)
|
18
|
-
self.new(params).tap do |service|
|
19
|
-
service.run!(&block)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.service_class(klass)
|
24
|
-
@service_class = klass
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.get_service_class
|
28
|
-
@service_class
|
29
|
-
end
|
30
|
-
|
31
|
-
def initialize(params = nil)
|
32
|
-
##
|
33
|
-
# The object which will be assigned to the service
|
34
|
-
@object = nil
|
35
|
-
|
36
|
-
##
|
37
|
-
# The state of success, was the service successful
|
38
|
-
@successful = false
|
39
|
-
|
40
|
-
##
|
41
|
-
# The state of the run, has the service being ran
|
42
|
-
@ran = false
|
43
|
-
|
44
|
-
##
|
45
|
-
# The errors which are returned by the service
|
46
|
-
@errors = nil
|
47
|
-
|
48
|
-
##
|
49
|
-
# The service class stored on the instance. This will override the
|
50
|
-
# service class set statically
|
51
|
-
@service_class = nil
|
52
|
-
|
53
|
-
##
|
54
|
-
# The params passed to the resource
|
55
|
-
@params = params
|
56
|
-
end
|
57
|
-
|
58
|
-
##
|
59
|
-
# This runs the safe version of the service. E.g. Will rescue on exception
|
60
|
-
def run(&block)
|
61
|
-
set_ran
|
62
|
-
begin
|
63
|
-
initialize_service
|
64
|
-
internal_validation
|
65
|
-
run_service
|
66
|
-
rescue StandardError => e
|
67
|
-
set_successful(false)
|
68
|
-
set_error(e)
|
69
|
-
ensure
|
70
|
-
call_block(&block)
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
##
|
75
|
-
# This runs the unsafe version of the service. E.g. Exceptions will be thrown
|
76
|
-
def run!(&block)
|
77
|
-
set_ran
|
78
|
-
begin
|
79
|
-
initialize_service
|
80
|
-
internal_validation
|
81
|
-
run_service!
|
82
|
-
call_block(&block)
|
83
|
-
rescue StandardError => e
|
84
|
-
set_successful(false)
|
85
|
-
set_error(e)
|
86
|
-
raise e
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
def set_service_class(value)
|
91
|
-
@service_class = value
|
92
|
-
end
|
93
|
-
|
94
|
-
##
|
95
|
-
# Sets the service_class instance variable
|
96
|
-
def service_class=(value)
|
97
|
-
set_service_class(value)
|
98
|
-
end
|
99
|
-
|
100
|
-
##
|
101
|
-
# Gets the service_class. This will go instance first, then static
|
102
|
-
def service_class
|
103
|
-
@service_class || self.class.get_service_class
|
104
|
-
end
|
105
|
-
|
106
|
-
def set_params(value)
|
107
|
-
@params = value
|
108
|
-
end
|
109
|
-
|
110
|
-
def params=(value)
|
111
|
-
set_params(value)
|
112
|
-
end
|
113
|
-
|
114
|
-
def param_for(key)
|
115
|
-
param(key)
|
116
|
-
end
|
117
|
-
|
118
|
-
def param(key)
|
119
|
-
@params[key] if @params
|
120
|
-
end
|
121
|
-
|
122
|
-
def ran?
|
123
|
-
@ran
|
124
|
-
end
|
125
|
-
|
126
|
-
def succeeded?
|
127
|
-
(@successful && !errors?)
|
128
|
-
end
|
129
|
-
|
130
|
-
def successful?
|
131
|
-
(@successful && !errors?)
|
132
|
-
end
|
133
|
-
|
134
|
-
def failed?
|
135
|
-
!succeeded?
|
136
|
-
end
|
137
|
-
|
138
|
-
def success(&block)
|
139
|
-
call_block(&block) if succeeded?
|
140
|
-
end
|
141
|
-
|
142
|
-
def failure(&block)
|
143
|
-
call_block(&block) if failed?
|
144
|
-
end
|
145
|
-
|
146
|
-
def errors?
|
147
|
-
!!(@errors && @errors.length.positive?)
|
148
|
-
end
|
149
|
-
|
150
|
-
def params?
|
151
|
-
!!@params
|
152
|
-
end
|
153
|
-
|
154
|
-
protected
|
155
|
-
|
156
|
-
def initialize_service() end
|
157
|
-
|
158
|
-
def run_service
|
159
|
-
set_successful
|
160
|
-
set_object(nil)
|
161
|
-
end
|
162
|
-
|
163
|
-
def run_service!
|
164
|
-
set_successful
|
165
|
-
set_object(nil)
|
166
|
-
end
|
167
|
-
|
168
|
-
def set_object(obj)
|
169
|
-
@object = obj
|
170
|
-
end
|
171
|
-
|
172
|
-
def set_error(error)
|
173
|
-
set_errors([]) unless @errors
|
174
|
-
@errors << error
|
175
|
-
end
|
176
|
-
|
177
|
-
def set_errors(errors)
|
178
|
-
@errors = errors
|
179
|
-
end
|
180
|
-
|
181
|
-
def set_successful(successful = true)
|
182
|
-
@successful = successful
|
183
|
-
end
|
184
|
-
|
185
|
-
def set_ran(ran = true)
|
186
|
-
@ran = ran
|
187
|
-
end
|
188
|
-
|
189
|
-
private
|
190
|
-
|
191
|
-
def internal_validation
|
192
|
-
set_params({}) unless params?
|
193
|
-
end
|
194
|
-
|
195
|
-
def call_block
|
196
|
-
yield(self) if block_given?
|
197
|
-
end
|
198
|
-
end
|
data/lib/service_provider.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
|
2
|
-
##
|
3
|
-
#
|
4
|
-
module ServiceProvider
|
5
|
-
def self.included(base)
|
6
|
-
base.extend ClassMethods
|
7
|
-
base.class_eval do
|
8
|
-
|
9
|
-
##
|
10
|
-
# Creates a brand new service of a given type
|
11
|
-
def service(service_type, service_params = {})
|
12
|
-
service_type.new.tap do |service|
|
13
|
-
service.set_params(service_params)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def run_service(service_type, service_params = {}, &block)
|
18
|
-
service(service_type, service_params).tap do |service|
|
19
|
-
service.set_service_class(service_type)
|
20
|
-
service.run(&block)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def run_service!(service_type, service_params = {}, &block)
|
25
|
-
service(service_type, service_params).tap do |service|
|
26
|
-
service.set_service_class(service_type)
|
27
|
-
service.run!(&block)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
module ClassMethods
|
34
|
-
|
35
|
-
end
|
36
|
-
end
|