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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b254da2dd4d69b3079db77abc649b7144c7ad05d381c51133b2404370a197185
4
- data.tar.gz: 132f8d5843c24f3646262dbbf303a928e934e7255690e108c3edc405c4320500
3
+ metadata.gz: 48cb6bb977e6fad5a1efd70a3dadab0366860eaa84ac41749877acc06017ae2c
4
+ data.tar.gz: 38a78f0ae7a47fe6f57a35724e55b9fc4e55131af57a222c099b5a1fb1d98095
5
5
  SHA512:
6
- metadata.gz: 9f4a2e78e0dc97e47988614fc88960d02c077336465ab3ae40fee9228260e683d6f896374a21db2c7c3dd37d12af65dc76f73b46790885b19e946b3bf5006883
7
- data.tar.gz: b4b0e8451c3894bac62c5afb695771f581d73fce08c468fe02ee3995193760cf2862a1bd595eec6566a1418d9c4041d4c696df45b8bdd46c666f3384baa0aa7e
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: 1.0.1
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: 2020-06-16 00:00:00.000000000 Z
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
@@ -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