bbservices 1.0.1 → 3.0.1

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: 3a1f2e96213010efff9a6fc0e7d7c2a9afe4f8139b18d1a9b0ec1930affccdbb
4
+ data.tar.gz: 82795e5ad405330c4cdd89d3e14c535dd70207598e3b7c71f81e905a9d78188b
5
5
  SHA512:
6
- metadata.gz: 9f4a2e78e0dc97e47988614fc88960d02c077336465ab3ae40fee9228260e683d6f896374a21db2c7c3dd37d12af65dc76f73b46790885b19e946b3bf5006883
7
- data.tar.gz: b4b0e8451c3894bac62c5afb695771f581d73fce08c468fe02ee3995193760cf2862a1bd595eec6566a1418d9c4041d4c696df45b8bdd46c666f3384baa0aa7e
6
+ metadata.gz: 3d2ccdbcce8e8404e7a6cac802eee2f135e0ded720449c84ec32898a38ae65143f7e75563799f3d9e984570902e350d80055a6f6ecbb8bb1eb1e41308e9349e6
7
+ data.tar.gz: ea5b4bb65ed5f14ce931c61d15aa5fe2c0666ec279345cab7ca7c3e26d38e4b555e9f5e80fe9487f17ca535e74228454a82cb185d686ecd61291623c813606ab
data/lib/bbservices.rb CHANGED
@@ -1,2 +1,4 @@
1
- require_relative 'service'
2
- require_relative 'service_provider'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'bbservices/service'
4
+ require_relative 'bbservices/service_provider'
@@ -0,0 +1,194 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BBServices
4
+ ##
5
+ # The base class for all services. Handles the basic run loop and general accessors
6
+ class Service
7
+ attr_reader :params, :object, :error
8
+
9
+ class << self
10
+ # Creates a new service class, then calls run
11
+ def run(params = {}, &block)
12
+ new(params).tap do |service|
13
+ service.run(&block)
14
+ end
15
+ end
16
+
17
+ ##
18
+ # Creates a new service class, then calls run!
19
+ def run!(params = {}, &block)
20
+ new(params).tap do |service|
21
+ service.run!(&block)
22
+ end
23
+ end
24
+
25
+ ##
26
+ # Sets the service class
27
+ def service_class(klass)
28
+ @service_class = klass
29
+ end
30
+
31
+ def get_service_class
32
+ @service_class
33
+ end
34
+ end
35
+
36
+ def initialize(params = {})
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 error that has been throw by the service
51
+ @error = 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
+ run_service
71
+ rescue => e
72
+ set_successful(false)
73
+ set_error(e)
74
+ ensure
75
+ call_block(&block)
76
+ end
77
+ end
78
+
79
+ ##
80
+ # This runs the unsafe version of the service. E.g. Exceptions will be thrown
81
+ def run!(&block)
82
+ set_ran
83
+ begin
84
+ initialize_service
85
+ run_service!
86
+ call_block(&block)
87
+ rescue => e
88
+ set_successful(false)
89
+ set_error(e)
90
+ raise e
91
+ end
92
+ end
93
+
94
+ ##
95
+ # Sets the service_class instance variable
96
+ def service_class=(value)
97
+ @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 number_of_params
123
+ @params ? @params.length : 0
124
+ end
125
+
126
+ def ran?
127
+ @ran
128
+ end
129
+
130
+ def succeeded?
131
+ successful?
132
+ end
133
+
134
+ def successful?
135
+ @successful
136
+ end
137
+
138
+ def failed?
139
+ !succeeded?
140
+ end
141
+
142
+ def success(&block)
143
+ call_block(&block) if succeeded?
144
+ end
145
+
146
+ def failure(&block)
147
+ call_block(&block) if failed?
148
+ end
149
+
150
+ def error?
151
+ !!@error
152
+ end
153
+
154
+ def params?
155
+ !!@params
156
+ end
157
+
158
+ protected
159
+
160
+ def initialize_service() end
161
+
162
+ def run_service
163
+ set_successful
164
+ set_object(nil)
165
+ end
166
+
167
+ def run_service!
168
+ set_successful
169
+ set_object(nil)
170
+ end
171
+
172
+ def set_object(obj)
173
+ @object = obj
174
+ end
175
+
176
+ def set_error(error)
177
+ @error = error
178
+ end
179
+
180
+ def set_successful(successful = true)
181
+ @successful = successful
182
+ end
183
+
184
+ def set_ran(ran = true)
185
+ @ran = ran
186
+ end
187
+
188
+ private
189
+
190
+ def call_block
191
+ yield(self) if block_given?
192
+ end
193
+ end
194
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BBServices
4
+ ##
5
+ #
6
+ module ServiceProvider
7
+ def self.included(base)
8
+ base.class_eval do
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
+ ##
18
+ # Creates and runs a brand new service using the safe method
19
+ def run_service(service_type, service_params = {}, &block)
20
+ service(service_type, service_params).tap do |service|
21
+ service.service_class = service_type
22
+ service.run(&block)
23
+ end
24
+ end
25
+
26
+ ##
27
+ # Creates and runs a brand new service using the unsafe method
28
+ def run_service!(service_type, service_params = {}, &block)
29
+ service(service_type, service_params).tap do |service|
30
+ service.service_class = service_type
31
+ service.run!(&block)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bbservices
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 3.0.1
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-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: guard-rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 4.7.3
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 4.7.3
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rspec
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -30,14 +44,14 @@ dependencies:
30
44
  requirements:
31
45
  - - '='
32
46
  - !ruby/object:Gem::Version
33
- version: 0.86.0
47
+ version: '1.13'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - '='
39
53
  - !ruby/object:Gem::Version
40
- version: 0.86.0
54
+ version: '1.13'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: simplecov
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -59,8 +73,8 @@ extensions: []
59
73
  extra_rdoc_files: []
60
74
  files:
61
75
  - lib/bbservices.rb
62
- - lib/service.rb
63
- - lib/service_provider.rb
76
+ - lib/bbservices/service.rb
77
+ - lib/bbservices/service_provider.rb
64
78
  homepage: https://gitlab.com/big-bear-studios-open-source/bbservices
65
79
  licenses:
66
80
  - MIT
@@ -73,7 +87,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
73
87
  requirements:
74
88
  - - ">="
75
89
  - !ruby/object:Gem::Version
76
- version: '0'
90
+ version: '2.5'
77
91
  required_rubygems_version: !ruby/object:Gem::Requirement
78
92
  requirements:
79
93
  - - ">="
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