glia-errors 0.9.0 → 0.10.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 +4 -4
- data/glia-errors.gemspec +1 -1
- data/lib/glia/errors/client_errors.rb +33 -8
- data/lib/glia/errors/error.rb +0 -7
- data/lib/glia/errors/error_types.rb +1 -0
- data/lib/glia/errors/naming.rb +16 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 110bf7c1b2d1b5855f92c842563f59fe6b93157b5bee67af2e446b212dc2b108
|
4
|
+
data.tar.gz: e99a9338aa7995f17865a25ac6dc4c60fbfc0aa883d507add47043b0ec9f448a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74b6285d294a404baa2d59e3406d1f021c2319aab4bb73f7f4cda571dce46eb55250347bfd8c66dddab43404357c5e6a6c996a1bc936857498f3b148e50c185a
|
7
|
+
data.tar.gz: 96ef53cbee527e3e64606223c81a0335954a40187bd830231fc0d07160ce82554894c2be1d38e51cc2f271c661affd301b0640ac4b3339045574c4c944d02170
|
data/glia-errors.gemspec
CHANGED
@@ -5,6 +5,12 @@ module Glia
|
|
5
5
|
# rubocop:disable Style/Documentation
|
6
6
|
class InputValidationError < Error
|
7
7
|
def initialize(error_details:, message: nil)
|
8
|
+
raise ArgumentError, 'At least 1 error detail is required' if error_details.keys.count.zero?
|
9
|
+
|
10
|
+
error_details.each_value do |value|
|
11
|
+
raise ArgumentError, 'error_details values must be lists' unless value.is_a?(Array)
|
12
|
+
end
|
13
|
+
|
8
14
|
super(
|
9
15
|
type: INPUT_VALIDATION_ERROR,
|
10
16
|
ref: create_ref(INPUT_VALIDATION_ERROR),
|
@@ -131,7 +137,7 @@ module Glia
|
|
131
137
|
|
132
138
|
class ResourceNotFoundError < Error
|
133
139
|
def initialize(resource:, message: nil)
|
134
|
-
assert_snake_case(resource)
|
140
|
+
Naming.assert_snake_case(resource)
|
135
141
|
|
136
142
|
super(
|
137
143
|
type: RESOURCE_NOT_FOUND_ERROR,
|
@@ -144,7 +150,7 @@ module Glia
|
|
144
150
|
|
145
151
|
class NotVerifiedError < Error
|
146
152
|
def initialize(resource:, message: nil)
|
147
|
-
assert_snake_case(resource)
|
153
|
+
Naming.assert_snake_case(resource)
|
148
154
|
|
149
155
|
super(
|
150
156
|
type: NOT_VERIFIED_ERROR,
|
@@ -157,8 +163,8 @@ module Glia
|
|
157
163
|
|
158
164
|
class RemainingAssociationError < Error
|
159
165
|
def initialize(resource:, associated_resource:, message: nil)
|
160
|
-
assert_snake_case(resource)
|
161
|
-
assert_snake_case(associated_resource)
|
166
|
+
Naming.assert_snake_case(resource)
|
167
|
+
Naming.assert_snake_case(associated_resource)
|
162
168
|
|
163
169
|
default_message =
|
164
170
|
"cannot be modified/deleted because it is associated to one or more #{
|
@@ -175,7 +181,7 @@ module Glia
|
|
175
181
|
|
176
182
|
class ResourceLimitExceededError < Error
|
177
183
|
def initialize(resource:, max:, message: nil)
|
178
|
-
assert_snake_case(resource)
|
184
|
+
Naming.assert_snake_case(resource)
|
179
185
|
|
180
186
|
super(
|
181
187
|
type: LIMIT_EXCEEDED_ERROR,
|
@@ -188,7 +194,7 @@ module Glia
|
|
188
194
|
|
189
195
|
class ResourceAlreadyExistsError < Error
|
190
196
|
def initialize(resource:, message: nil)
|
191
|
-
assert_snake_case(resource)
|
197
|
+
Naming.assert_snake_case(resource)
|
192
198
|
|
193
199
|
super(
|
194
200
|
type: RESOURCE_ALREADY_EXISTS_ERROR,
|
@@ -201,8 +207,8 @@ module Glia
|
|
201
207
|
|
202
208
|
class InvalidResourceStateError < Error
|
203
209
|
def initialize(resource:, state:, message: nil)
|
204
|
-
assert_snake_case(resource)
|
205
|
-
assert_snake_case(state)
|
210
|
+
Naming.assert_snake_case(resource)
|
211
|
+
Naming.assert_snake_case(state)
|
206
212
|
|
207
213
|
super(
|
208
214
|
type: INVALID_RESOURCE_STATE_ERROR,
|
@@ -322,6 +328,25 @@ module Glia
|
|
322
328
|
)
|
323
329
|
end
|
324
330
|
end
|
331
|
+
|
332
|
+
class HeadersValidationError < Error
|
333
|
+
def initialize(error_details:, message: nil)
|
334
|
+
raise ArgumentError, 'At least 1 error detail is required' if error_details.keys.count.zero?
|
335
|
+
|
336
|
+
error_details.each_value do |value|
|
337
|
+
raise ArgumentError, 'error_details values must be lists' unless value.is_a?(Array)
|
338
|
+
end
|
339
|
+
|
340
|
+
error_details.each_key { |key| Naming.assert_header(key) }
|
341
|
+
|
342
|
+
super(
|
343
|
+
type: HEADERS_VALIDATION_ERROR,
|
344
|
+
ref: create_ref(HEADERS_VALIDATION_ERROR),
|
345
|
+
message: message || 'Headers are invalid',
|
346
|
+
error_details: error_details
|
347
|
+
)
|
348
|
+
end
|
349
|
+
end
|
325
350
|
# rubocop:enable Style/Documentation
|
326
351
|
end
|
327
352
|
end
|
data/lib/glia/errors/error.rb
CHANGED
@@ -6,7 +6,6 @@ module Glia
|
|
6
6
|
module Errors
|
7
7
|
# Base error
|
8
8
|
class Error
|
9
|
-
SNAKE_CASE_REGEX = /^[a-z0-9]+(_[a-z0-9]+)*$/.freeze
|
10
9
|
attr_reader :type, :ref, :message, :error_details
|
11
10
|
|
12
11
|
def initialize(type:, ref:, message: nil, error_details: nil)
|
@@ -45,12 +44,6 @@ module Glia
|
|
45
44
|
[TrueClass, FalseClass, String, Integer, Float, Symbol].include?(details.class)
|
46
45
|
end
|
47
46
|
|
48
|
-
def assert_snake_case(value)
|
49
|
-
return if value.to_s.match(SNAKE_CASE_REGEX)
|
50
|
-
|
51
|
-
raise ArgumentError, "Expected '#{value}' to be in snake case"
|
52
|
-
end
|
53
|
-
|
54
47
|
def create_ref(type)
|
55
48
|
fragment = type.gsub('_', '-')
|
56
49
|
"https://docs.glia.com/glia-dev/reference/errors##{fragment}"
|
@@ -28,6 +28,7 @@ module Glia
|
|
28
28
|
TELEPHONY_PROVIDER_QUEUE_LIMIT_EXCEEDED_ERROR = 'telephony_provider_queue_limit_exceeded_error'
|
29
29
|
TWILIO_MESSAGING_SERVICE_CONFIGURATION_ERROR = 'twilio_messaging_service_configuration_error'
|
30
30
|
UNREACHABLE_DESTINATION_ERROR = 'unreachable_destination_error'
|
31
|
+
HEADERS_VALIDATION_ERROR = 'headers_validation_error'
|
31
32
|
|
32
33
|
# Server errors
|
33
34
|
INTERNAL_SERVER_ERROR = 'internal_server_error'
|
data/lib/glia/errors/naming.rb
CHANGED
@@ -29,6 +29,22 @@ module Glia
|
|
29
29
|
private_class_method def self.upcase_first(value)
|
30
30
|
value[0].upcase.concat(value[1..-1])
|
31
31
|
end
|
32
|
+
|
33
|
+
SNAKE_CASE_REGEX = /\A[a-z0-9]+(_[a-z0-9]+)*\z/.freeze
|
34
|
+
|
35
|
+
def self.assert_snake_case(value)
|
36
|
+
return if value.to_s.match(SNAKE_CASE_REGEX)
|
37
|
+
|
38
|
+
raise ArgumentError, "Expected '#{value}' to be in snake case"
|
39
|
+
end
|
40
|
+
|
41
|
+
HEADER_REGEX = /\A[A-Z0-9]+[a-z0-9]*(-[A-Z0-9]+[a-zz0-9]*)*\z/.freeze
|
42
|
+
|
43
|
+
def self.assert_header(value)
|
44
|
+
return if value.to_s.match(HEADER_REGEX)
|
45
|
+
|
46
|
+
raise ArgumentError, "Expected '#{value}' to be a valid header"
|
47
|
+
end
|
32
48
|
end
|
33
49
|
end
|
34
50
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glia-errors
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Glia TechMovers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-03-
|
11
|
+
date: 2021-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: ''
|
14
14
|
email:
|