glia-errors 0.11.10 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.prettierrc +1 -1
- data/Gemfile +1 -6
- data/Gemfile.lock +0 -6
- data/README.md +6 -20
- data/Rakefile +1 -24
- data/glia-errors.gemspec +1 -1
- data/lib/glia/errors/client_errors.rb +22 -11
- data/lib/glia/errors/error.rb +3 -8
- data/lib/glia/errors/error_types.rb +2 -2
- data/lib/glia/errors/mapper.rb +4 -12
- data/lib/glia/errors.rb +6 -5
- metadata +7 -10
- data/Appraisals +0 -14
- data/gemfiles/dry_validation_v0.gemfile +0 -19
- data/gemfiles/dry_validation_v1.gemfile +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a2c74c904931658ed3873ae51474edddcb93b0110129cfa7e70bb4c4894ffc8
|
4
|
+
data.tar.gz: 377d265f4e0772363bfbbac4fc4be97ba925d99afe78ba458ef72f1329e79fad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c3d8c4ad7aaf500b3d3cc056d7166b0f41ec184a452a11d1f89c28f1d518bbdfe79386ec1c796d5254486b968f81336a638343f913c6c313a872a72f31da1f80
|
7
|
+
data.tar.gz: 67833dced10d66343315259b86de96565e583295295352caac505e488555d101d1a1daa82c95476b6158bcf80972f3a8edf9ac537e4d7992190ec19dd89c1178
|
data/.prettierrc
CHANGED
@@ -1 +1 @@
|
|
1
|
-
printWidth:
|
1
|
+
printWidth: 120
|
data/Gemfile
CHANGED
@@ -4,6 +4,7 @@ source 'https://rubygems.org'
|
|
4
4
|
|
5
5
|
gemspec
|
6
6
|
|
7
|
+
gem 'dry-validation', '~> 1.8'
|
7
8
|
gem 'prettier', '~> 0.22'
|
8
9
|
gem 'rake', '~> 13.0'
|
9
10
|
gem 'rspec', '~> 3.10'
|
@@ -11,9 +12,3 @@ gem 'rubocop', '~> 1.5'
|
|
11
12
|
gem 'rubocop-rake', '~> 0.5'
|
12
13
|
gem 'rubocop-rspec', '~> 2.0'
|
13
14
|
gem 'super_diff'
|
14
|
-
|
15
|
-
group :test do
|
16
|
-
gem 'appraisal'
|
17
|
-
end
|
18
|
-
|
19
|
-
gem 'dry-validation', '~> 1.8'
|
data/Gemfile.lock
CHANGED
@@ -6,10 +6,6 @@ PATH
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
appraisal (2.3.0)
|
10
|
-
bundler
|
11
|
-
rake
|
12
|
-
thor (>= 0.14.0)
|
13
9
|
ast (2.4.2)
|
14
10
|
attr_extras (6.2.5)
|
15
11
|
concurrent-ruby (1.1.10)
|
@@ -90,7 +86,6 @@ GEM
|
|
90
86
|
attr_extras (>= 6.2.4)
|
91
87
|
diff-lcs
|
92
88
|
patience_diff
|
93
|
-
thor (1.0.1)
|
94
89
|
unicode-display_width (2.1.0)
|
95
90
|
|
96
91
|
PLATFORMS
|
@@ -98,7 +93,6 @@ PLATFORMS
|
|
98
93
|
x86_64-darwin-19
|
99
94
|
|
100
95
|
DEPENDENCIES
|
101
|
-
appraisal
|
102
96
|
dry-validation (~> 1.8)
|
103
97
|
glia-errors!
|
104
98
|
prettier (~> 0.22)
|
data/README.md
CHANGED
@@ -31,9 +31,7 @@ glia_error = Glia::Errors::ResourceNotFoundError.new(resource: :engagement)
|
|
31
31
|
|
32
32
|
#### Create Glia error from `dry-validation` result
|
33
33
|
|
34
|
-
|
35
|
-
* `v0` up to `0.13`
|
36
|
-
* `v1` up to `1.8`
|
34
|
+
Supports `dry-validation` from `1.6.x` to `1.8.x`
|
37
35
|
|
38
36
|
```ruby
|
39
37
|
schema = Dry::Validation.Schema do
|
@@ -106,31 +104,19 @@ else
|
|
106
104
|
end
|
107
105
|
```
|
108
106
|
|
109
|
-
##
|
107
|
+
## Releasing a new version
|
110
108
|
|
111
|
-
|
109
|
+
A new version is created when a change is merged into the master branch that changes the version number in `glia-errors.gemspec`.
|
110
|
+
A Github Action will push the `.gem` file to [rubygems.org](https://rubygems.org)
|
112
111
|
|
113
|
-
|
114
|
-
Under the hood we use `Appraisal` gem which generals additional gemfiles for each of the versions.
|
112
|
+
## Contributing
|
115
113
|
|
116
|
-
|
114
|
+
### Testing
|
117
115
|
|
118
116
|
```
|
119
117
|
bundle exec rake test
|
120
118
|
```
|
121
119
|
|
122
|
-
To run tests only for `dry-validation` v1:
|
123
|
-
|
124
|
-
```
|
125
|
-
bundle exec rake test_dry_validation_v1
|
126
|
-
```
|
127
|
-
|
128
|
-
To run tests only for `dry-validation` v0:
|
129
|
-
|
130
|
-
```
|
131
|
-
bundle exec rake test_dry_validation_v0
|
132
|
-
```
|
133
|
-
|
134
120
|
### Formatting
|
135
121
|
|
136
122
|
```
|
data/Rakefile
CHANGED
@@ -11,7 +11,7 @@ RuboCop::RakeTask.new do |task|
|
|
11
11
|
task.requires << 'rubocop-rspec'
|
12
12
|
end
|
13
13
|
|
14
|
-
task default: %i[lint
|
14
|
+
task default: %i[lint spec]
|
15
15
|
|
16
16
|
task :lint do
|
17
17
|
sh "rubocop && rbprettier --check '**/*.rb'"
|
@@ -20,26 +20,3 @@ end
|
|
20
20
|
task :format do
|
21
21
|
sh "rbprettier --write '**/*.rb'"
|
22
22
|
end
|
23
|
-
|
24
|
-
task :install_test_deps do
|
25
|
-
sh 'bundle exec appraisal install'
|
26
|
-
end
|
27
|
-
|
28
|
-
ruby_major_version = RUBY_VERSION.split('.').first.to_i
|
29
|
-
|
30
|
-
# dry-validation 0.x won't load in Ruby 3
|
31
|
-
if ruby_major_version < 3
|
32
|
-
task test: %i[test_dry_validation_v1 test_dry_validation_v0]
|
33
|
-
else
|
34
|
-
task test: :test_dry_validation_v1
|
35
|
-
end
|
36
|
-
|
37
|
-
task test_dry_validation_v1: :install_test_deps do
|
38
|
-
sh 'bundle exec appraisal dry_validation_v1 rspec'
|
39
|
-
end
|
40
|
-
|
41
|
-
if ruby_major_version < 3
|
42
|
-
task test_dry_validation_v0: :install_test_deps do
|
43
|
-
sh 'bundle exec appraisal dry_validation_v0 rspec --tag dry_validation_v0'
|
44
|
-
end
|
45
|
-
end
|
data/glia-errors.gemspec
CHANGED
@@ -62,11 +62,7 @@ module Glia
|
|
62
62
|
|
63
63
|
def initialize(field:, format: nil, message: nil)
|
64
64
|
default_message =
|
65
|
-
|
66
|
-
"has invalid format, required format is #{humanize_format(format)}"
|
67
|
-
else
|
68
|
-
'has invalid format'
|
69
|
-
end
|
65
|
+
format ? "has invalid format, required format is #{humanize_format(format)}" : 'has invalid format'
|
70
66
|
super(
|
71
67
|
type: INVALID_FORMAT_ERROR,
|
72
68
|
ref: create_ref(INVALID_FORMAT_ERROR),
|
@@ -261,9 +257,7 @@ module Glia
|
|
261
257
|
class RouteNotFoundError < Error
|
262
258
|
def initialize(message: nil)
|
263
259
|
super(
|
264
|
-
type: ROUTE_NOT_FOUND_ERROR,
|
265
|
-
ref: create_ref(ROUTE_NOT_FOUND_ERROR),
|
266
|
-
message: message || 'Route not found'
|
260
|
+
type: ROUTE_NOT_FOUND_ERROR, ref: create_ref(ROUTE_NOT_FOUND_ERROR), message: message || 'Route not found'
|
267
261
|
)
|
268
262
|
end
|
269
263
|
end
|
@@ -281,9 +275,7 @@ module Glia
|
|
281
275
|
class CarrierError < Error
|
282
276
|
def initialize(message: nil)
|
283
277
|
super(
|
284
|
-
type: CARRIER_ERROR,
|
285
|
-
ref: create_ref(CARRIER_ERROR),
|
286
|
-
message: message || 'Downstream carrier issue occurred'
|
278
|
+
type: CARRIER_ERROR, ref: create_ref(CARRIER_ERROR), message: message || 'Downstream carrier issue occurred'
|
287
279
|
)
|
288
280
|
end
|
289
281
|
end
|
@@ -417,6 +409,25 @@ module Glia
|
|
417
409
|
end
|
418
410
|
end
|
419
411
|
|
412
|
+
class ItemsOverlapError < Error
|
413
|
+
def initialize(overlapping_item_indexes:, message: nil)
|
414
|
+
raise ArgumentError, 'overlapping_item_indexes value must be list' unless overlapping_item_indexes.is_a?(Array)
|
415
|
+
|
416
|
+
raise ArgumentError, 'at least 2 overlapping item indexes are required' if overlapping_item_indexes.size < 2
|
417
|
+
|
418
|
+
overlapping_item_indexes.each do |value|
|
419
|
+
raise ArgumentError, 'overlapping_item_indexes values must be integers' unless value.is_a?(Integer)
|
420
|
+
end
|
421
|
+
|
422
|
+
super(
|
423
|
+
type: ITEMS_OVERLAP_ERROR,
|
424
|
+
ref: create_ref(ITEMS_OVERLAP_ERROR),
|
425
|
+
message: message || 'Items must not overlap each other',
|
426
|
+
error_details: { overlapping_item_indexes: overlapping_item_indexes }
|
427
|
+
)
|
428
|
+
end
|
429
|
+
end
|
430
|
+
|
420
431
|
# rubocop:enable Style/Documentation
|
421
432
|
end
|
422
433
|
end
|
data/lib/glia/errors/error.rb
CHANGED
@@ -16,9 +16,7 @@ module Glia
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def to_h
|
19
|
-
{
|
20
|
-
type: type, ref: ref, message: message, error_details: error_details_to_h(@error_details)
|
21
|
-
}.compact
|
19
|
+
{ type: type, ref: ref, message: message, error_details: error_details_to_h(@error_details) }.compact
|
22
20
|
end
|
23
21
|
|
24
22
|
private
|
@@ -27,9 +25,7 @@ module Glia
|
|
27
25
|
return details if primitive?(details)
|
28
26
|
|
29
27
|
if details.is_a?(Hash)
|
30
|
-
details.keys.each_with_object({})
|
31
|
-
hash[field] = error_details_to_h(details[field])
|
32
|
-
end
|
28
|
+
details.keys.each_with_object({}) { |field, hash| hash[field] = error_details_to_h(details[field]) }
|
33
29
|
elsif details.is_a?(Array)
|
34
30
|
details.map { |error| error_details_to_h(error) }
|
35
31
|
elsif details.respond_to?(:to_h)
|
@@ -40,8 +36,7 @@ module Glia
|
|
40
36
|
end
|
41
37
|
|
42
38
|
def primitive?(details)
|
43
|
-
details.nil? ||
|
44
|
-
[TrueClass, FalseClass, String, Integer, Float, Symbol].include?(details.class)
|
39
|
+
details.nil? || [TrueClass, FalseClass, String, Integer, Float, Symbol].include?(details.class)
|
45
40
|
end
|
46
41
|
|
47
42
|
def create_ref(type)
|
@@ -34,8 +34,8 @@ module Glia
|
|
34
34
|
FACEBOOK_ACCESS_TOKEN_NOT_PERMANENT_ERROR = 'facebook_access_token_not_permanent_error'
|
35
35
|
OAUTH_CODE_EXPIRED_ERROR = 'oauth_code_expired_error'
|
36
36
|
OAUTH_CODE_ALREADY_USED_ERROR = 'oauth_code_already_used_error'
|
37
|
-
APPLE_BUSINESS_CHAT_BUSINESS_USED_BY_OTHER_SITE_ERROR =
|
38
|
-
|
37
|
+
APPLE_BUSINESS_CHAT_BUSINESS_USED_BY_OTHER_SITE_ERROR = 'apple_business_chat_business_used_by_other_site_error'
|
38
|
+
ITEMS_OVERLAP_ERROR = 'items_overlap_error'
|
39
39
|
|
40
40
|
# Server errors
|
41
41
|
INTERNAL_SERVER_ERROR = 'internal_server_error'
|
data/lib/glia/errors/mapper.rb
CHANGED
@@ -12,8 +12,7 @@ module Glia
|
|
12
12
|
InvalidTypeError::Types::ARRAY
|
13
13
|
when 'must be an integer', 'must be Integer'
|
14
14
|
InvalidTypeError::Types::INTEGER
|
15
|
-
when 'must be a number', 'must be a float', 'must be a decimal', 'must be Float',
|
16
|
-
'must be BigDecimal'
|
15
|
+
when 'must be a number', 'must be a float', 'must be a decimal', 'must be Float', 'must be BigDecimal'
|
17
16
|
InvalidTypeError::Types::NUMBER
|
18
17
|
when 'must be a hash', 'must be Hash'
|
19
18
|
InvalidTypeError::Types::OBJECT
|
@@ -39,11 +38,7 @@ module Glia
|
|
39
38
|
# so we are separating them ourselves
|
40
39
|
INVALID_NUMBER_OR_VALUE_ERROR =
|
41
40
|
lambda do |field, value, _message|
|
42
|
-
|
43
|
-
InvalidValueError.new(field: field)
|
44
|
-
else
|
45
|
-
InvalidNumberError.new(field: field)
|
46
|
-
end
|
41
|
+
value.is_a?(String) ? InvalidValueError.new(field: field) : InvalidNumberError.new(field: field)
|
47
42
|
end
|
48
43
|
|
49
44
|
INVALID_DATE_FORMAT =
|
@@ -125,8 +120,7 @@ module Glia
|
|
125
120
|
'is missing' => MISSING_VALUE_ERROR,
|
126
121
|
# Custom format errors
|
127
122
|
'must be in E.164 format' => INVALID_FORMAT_ERROR,
|
128
|
-
'must be up to 25 symbol string that contains only 1-7 digits and commas' =>
|
129
|
-
INVALID_FORMAT_ERROR,
|
123
|
+
'must be up to 25 symbol string that contains only 1-7 digits and commas' => INVALID_FORMAT_ERROR,
|
130
124
|
'must be a valid email' => INVALID_FORMAT_ERROR
|
131
125
|
}.freeze
|
132
126
|
|
@@ -146,9 +140,7 @@ module Glia
|
|
146
140
|
# This is not needed for the `else` case as dry-validation already provides an array.
|
147
141
|
[from_dry_validation_result_rec(field_value, field_messages, error_map)]
|
148
142
|
else
|
149
|
-
field_messages.map
|
150
|
-
from_dry_validation_error(field, field_value, message, error_map)
|
151
|
-
end
|
143
|
+
field_messages.map { |message| from_dry_validation_error(field, field_value, message, error_map) }
|
152
144
|
end
|
153
145
|
end
|
154
146
|
InputValidationError.new(error_details: error_details)
|
data/lib/glia/errors.rb
CHANGED
@@ -11,13 +11,14 @@ module Glia
|
|
11
11
|
module Errors
|
12
12
|
def self.from_dry_validation_result(result, custom_error_map = {})
|
13
13
|
dry_validation_version = Gem.loaded_specs['dry-validation'].version
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
else
|
14
|
+
|
15
|
+
# When updating supported version ensure that if new version contains new dry-validation new validations
|
16
|
+
# that they are correctly mapped to Glia errors in mapper.rb
|
17
|
+
unless dry_validation_version >= Gem::Version.new('1.0') && dry_validation_version < Gem::Version.new('1.9')
|
19
18
|
raise 'Unsupported dry-validation version'
|
20
19
|
end
|
20
|
+
|
21
|
+
Mapper.from_dry_validation_result(result.to_h, result.errors.to_h, custom_error_map)
|
21
22
|
end
|
22
23
|
end
|
23
24
|
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.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Glia TechMovers
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-13 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: ''
|
14
14
|
email:
|
@@ -24,13 +24,10 @@ files:
|
|
24
24
|
- ".rubocop.yml"
|
25
25
|
- ".ruby-version"
|
26
26
|
- ".travis.yml"
|
27
|
-
- Appraisals
|
28
27
|
- Gemfile
|
29
28
|
- Gemfile.lock
|
30
29
|
- README.md
|
31
30
|
- Rakefile
|
32
|
-
- gemfiles/dry_validation_v0.gemfile
|
33
|
-
- gemfiles/dry_validation_v1.gemfile
|
34
31
|
- glia-errors.gemspec
|
35
32
|
- lib/glia/errors.rb
|
36
33
|
- lib/glia/errors/client_errors.rb
|
@@ -39,11 +36,11 @@ files:
|
|
39
36
|
- lib/glia/errors/mapper.rb
|
40
37
|
- lib/glia/errors/naming.rb
|
41
38
|
- lib/glia/errors/server_errors.rb
|
42
|
-
homepage:
|
39
|
+
homepage:
|
43
40
|
licenses:
|
44
41
|
- MIT
|
45
42
|
metadata: {}
|
46
|
-
post_install_message:
|
43
|
+
post_install_message:
|
47
44
|
rdoc_options: []
|
48
45
|
require_paths:
|
49
46
|
- lib
|
@@ -61,8 +58,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
61
58
|
- !ruby/object:Gem::Version
|
62
59
|
version: '0'
|
63
60
|
requirements: []
|
64
|
-
rubygems_version: 3.
|
65
|
-
signing_key:
|
61
|
+
rubygems_version: 3.1.2
|
62
|
+
signing_key:
|
66
63
|
specification_version: 4
|
67
64
|
summary: Glia REST API errors
|
68
65
|
test_files: []
|
data/Appraisals
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
ruby_major_version = RUBY_VERSION.split('.').first.to_i
|
4
|
-
|
5
|
-
if ruby_major_version < 3
|
6
|
-
appraise 'dry_validation_v0' do
|
7
|
-
gem 'dry-core', '~> 0.5.0'
|
8
|
-
gem 'dry-validation', '~> 0.13.0'
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
appraise 'dry_validation_v1' do
|
13
|
-
gem 'dry-validation', '~> 1.8'
|
14
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# This file was generated by Appraisal
|
2
|
-
|
3
|
-
source "https://rubygems.org"
|
4
|
-
|
5
|
-
gem "prettier", "~> 0.22"
|
6
|
-
gem "rake", "~> 13.0"
|
7
|
-
gem "rspec", "~> 3.10"
|
8
|
-
gem "rubocop", "~> 1.5"
|
9
|
-
gem "rubocop-rake", "~> 0.5"
|
10
|
-
gem "rubocop-rspec", "~> 2.0"
|
11
|
-
gem "super_diff"
|
12
|
-
gem "dry-validation", "~> 0.13.0"
|
13
|
-
gem "dry-core", "~> 0.5.0"
|
14
|
-
|
15
|
-
group :test do
|
16
|
-
gem "appraisal"
|
17
|
-
end
|
18
|
-
|
19
|
-
gemspec path: "../"
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# This file was generated by Appraisal
|
2
|
-
|
3
|
-
source "https://rubygems.org"
|
4
|
-
|
5
|
-
gem "prettier", "~> 0.22"
|
6
|
-
gem "rake", "~> 13.0"
|
7
|
-
gem "rspec", "~> 3.10"
|
8
|
-
gem "rubocop", "~> 1.5"
|
9
|
-
gem "rubocop-rake", "~> 0.5"
|
10
|
-
gem "rubocop-rspec", "~> 2.0"
|
11
|
-
gem "super_diff"
|
12
|
-
gem "dry-validation", "~> 1.8"
|
13
|
-
|
14
|
-
group :test do
|
15
|
-
gem "appraisal"
|
16
|
-
end
|
17
|
-
|
18
|
-
gemspec path: "../"
|