glia-errors 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cf61f6be102a1651954298dacfe9e93cfeb27f81ad078e52ec7bf16542bf402b
4
- data.tar.gz: 2c9d1373869e3f9525d9f01116ecff9b5a09396b855c7c8ce1e3d9fc96eb43d2
3
+ metadata.gz: 603e9be432c9f317013ed3fb16c5861c75c844a3584d08ac3d4f39f1ba58ace4
4
+ data.tar.gz: 7c88ac1f5d039ce62ec55f7ecb0ad4001138f48452a34d5697678c318873c753
5
5
  SHA512:
6
- metadata.gz: ec694ade2f6c374c638832d8ad3a6d67523c218e296901b92560807dae34a29b173edc1eacde316c15c616ec063831886aec324da280b81fed6cc97840c435d4
7
- data.tar.gz: d69081a24657b4647e7146d72c165e68b70698f548e7a0b2f1216ade437161a48d873a74b88adcb18f886f10d7fef4b60e0df589ce12466df707e40c7380d48f
6
+ metadata.gz: 737bc0b2593e79b79fb41c61bafe9ec2ef6b7d4deb9cd3175167fd5bcd30dcb79b4d85bf1c366f8fff5cd6a35ec75e76ce2903919da336bba4b53f118a2e4311
7
+ data.tar.gz: '0129e0df64a24f03a7b54d013f4c83b76ff1a66fd2e599fcdd7520859e45a4b68900e73a007e51042b171c9f4cbb391918dfdc6a49f9eabb96723ad1be50b245'
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.7.2
data/glia-errors.gemspec CHANGED
@@ -5,7 +5,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'glia-errors'
8
- spec.version = '0.5.0'
8
+ spec.version = '0.5.1'
9
9
  spec.authors = ['Glia TechMovers']
10
10
  spec.email = ['techmovers@glia.com']
11
11
 
data/lib/glia/errors.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  require_relative './errors/error'
4
4
  require_relative './errors/error_types'
5
5
  require_relative './errors/client_errors'
6
+ require_relative './errors/server_errors'
6
7
  require_relative './errors/mapper'
7
8
 
8
9
  module Glia
@@ -19,7 +19,7 @@ module Glia
19
19
  super(
20
20
  type: INVALID_NUMBER_ERROR,
21
21
  ref: "https://example.com/errors/#{INVALID_NUMBER_ERROR}.html",
22
- message: "#{humanize(field)} " + (message || 'is invalid')
22
+ message: "#{humanize(field)} " + (message || 'value is invalid')
23
23
  )
24
24
  end
25
25
  end
@@ -29,7 +29,7 @@ module Glia
29
29
  super(
30
30
  type: INVALID_VALUE_ERROR,
31
31
  ref: "https://example.com/errors/#{INVALID_VALUE_ERROR}.html",
32
- message: "#{humanize(field)} " + (message || 'is invalid')
32
+ message: "#{humanize(field)} " + (message || 'value is invalid')
33
33
  )
34
34
  end
35
35
  end
@@ -77,7 +77,8 @@ module Glia
77
77
  super(
78
78
  type: INVALID_TYPE_ERROR,
79
79
  ref: "https://example.com/errors/#{INVALID_TYPE_ERROR}.html",
80
- message: "#{humanize(field)} " + (message || "must be of type #{type}")
80
+ message: "#{humanize(field)} " + (message || "must be of type #{type}"),
81
+ error_details: { type: type }
81
82
  )
82
83
  end
83
84
  end
@@ -104,6 +105,8 @@ module Glia
104
105
 
105
106
  class ResourceNotFoundError < Error
106
107
  def initialize(resource:, message: nil)
108
+ assert_snake_case(resource)
109
+
107
110
  super(
108
111
  type: RESOURCE_NOT_FOUND_ERROR,
109
112
  ref: "https://example.com/errors/#{RESOURCE_NOT_FOUND_ERROR}.html",
@@ -115,6 +118,8 @@ module Glia
115
118
 
116
119
  class NotVerifiedError < Error
117
120
  def initialize(resource:, message: nil)
121
+ assert_snake_case(resource)
122
+
118
123
  super(
119
124
  type: NOT_VERIFIED_ERROR,
120
125
  ref: "https://example.com/errors/#{NOT_VERIFIED_ERROR}.html",
@@ -126,6 +131,9 @@ module Glia
126
131
 
127
132
  class RemainingAssociationError < Error
128
133
  def initialize(resource:, associated_resource:, message: nil)
134
+ assert_snake_case(resource)
135
+ assert_snake_case(associated_resource)
136
+
129
137
  default_message =
130
138
  "cannot be modified/deleted because it is associated to one or more #{
131
139
  humanize(associated_resource)
@@ -141,6 +149,8 @@ module Glia
141
149
 
142
150
  class LimitExceededError < Error
143
151
  def initialize(resource:, max:, message: nil)
152
+ assert_snake_case(resource)
153
+
144
154
  super(
145
155
  type: LIMIT_EXCEEDED_ERROR,
146
156
  ref: "https://example.com/errors/#{LIMIT_EXCEEDED_ERROR}.html",
@@ -152,6 +162,8 @@ module Glia
152
162
 
153
163
  class ResourceAlreadyExistsError < Error
154
164
  def initialize(resource:, message: nil)
165
+ assert_snake_case(resource)
166
+
155
167
  super(
156
168
  type: RESOURCE_ALREADY_EXISTS_ERROR,
157
169
  ref: "https://example.com/errors/#{RESOURCE_ALREADY_EXISTS_ERROR}.html",
@@ -163,6 +175,9 @@ module Glia
163
175
 
164
176
  class InvalidResourceStateError < Error
165
177
  def initialize(resource:, state:, message: nil)
178
+ assert_snake_case(resource)
179
+ assert_snake_case(state)
180
+
166
181
  super(
167
182
  type: INVALID_RESOURCE_STATE_ERROR,
168
183
  ref: "https://example.com/errors/#{INVALID_RESOURCE_STATE_ERROR}.html",
@@ -186,7 +201,8 @@ module Glia
186
201
  def initialize(message: nil)
187
202
  super(
188
203
  type: RECIPIENT_OPTED_OUT_ERROR,
189
- ref: "https://example.com/errors/#{RECIPIENT_OPTED_OUT_ERROR}.html",
204
+ ref:
205
+ 'https://docs.glia.com/glia-dev/reference/webhooks#example-engagementrequestfailure-event-with-fail_error',
190
206
  message: message || 'Recipient has opted out'
191
207
  )
192
208
  end
@@ -4,6 +4,7 @@ module Glia
4
4
  module Errors
5
5
  # Base error
6
6
  class Error
7
+ SNAKE_CASE_REGEX = /^[a-z0-9]+(_[a-z0-9]+)*$/.freeze
7
8
  attr_reader :type, :ref, :message, :error_details
8
9
 
9
10
  def initialize(type:, ref:, message: nil, error_details: nil)
@@ -46,6 +47,12 @@ module Glia
46
47
  def humanize(value)
47
48
  value.to_s.capitalize.gsub('_', ' ')
48
49
  end
50
+
51
+ def assert_snake_case(value)
52
+ return if value.to_s.match(SNAKE_CASE_REGEX)
53
+
54
+ raise ArgumentError, "Expected '#{value}' to be in snake case"
55
+ end
49
56
  end
50
57
  end
51
58
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  module Glia
4
4
  module Errors
5
+ # Client errors
5
6
  INPUT_VALIDATION_ERROR = 'input_validation_error'
6
7
  INVALID_TYPE_ERROR = 'invalid_type_error'
7
8
  INVALID_NUMBER_ERROR = 'invalid_number_error'
@@ -18,5 +19,9 @@ module Glia
18
19
  INVALID_RESOURCE_STATE_ERROR = 'invalid_resource_state_error'
19
20
  AUTHORIZATION_ERROR = 'authorization_error'
20
21
  RECIPIENT_OPTED_OUT_ERROR = 'recipient_opted_out_error'
22
+
23
+ # Server errors
24
+ INTERNAL_SERVER_ERROR = 'internal_server_error'
25
+ SERVICE_UNAVAILABLE_ERROR = 'service_unavailable_error'
21
26
  end
22
27
  end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Glia
4
+ module Errors
5
+ # rubocop:disable Style/Documentation
6
+ class InternalServerError < Error
7
+ def initialize(message: nil)
8
+ super(
9
+ type: INTERNAL_SERVER_ERROR,
10
+ ref: "https://example.com/errors/#{INTERNAL_SERVER_ERROR}.html",
11
+ message: message || 'Internal server error'
12
+ )
13
+ end
14
+ end
15
+
16
+ class ServiceUnavailableError < Error
17
+ def initialize(message: nil)
18
+ super(
19
+ type: SERVICE_UNAVAILABLE_ERROR,
20
+ ref: "https://example.com/errors/#{SERVICE_UNAVAILABLE_ERROR}.html",
21
+ message: message || 'Service unavailable'
22
+ )
23
+ end
24
+ end
25
+ # rubocop:enable Style/Documentation
26
+ end
27
+ 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.5.0
4
+ version: 0.5.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-02-22 00:00:00.000000000 Z
11
+ date: 2021-03-02 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: ''
14
14
  email:
@@ -22,6 +22,7 @@ files:
22
22
  - ".prettierrc"
23
23
  - ".rspec"
24
24
  - ".rubocop.yml"
25
+ - ".ruby-version"
25
26
  - ".travis.yml"
26
27
  - Appraisals
27
28
  - Gemfile
@@ -36,6 +37,7 @@ files:
36
37
  - lib/glia/errors/error.rb
37
38
  - lib/glia/errors/error_types.rb
38
39
  - lib/glia/errors/mapper.rb
40
+ - lib/glia/errors/server_errors.rb
39
41
  homepage:
40
42
  licenses:
41
43
  - MIT
@@ -55,7 +57,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
55
57
  - !ruby/object:Gem::Version
56
58
  version: '0'
57
59
  requirements: []
58
- rubygems_version: 3.0.6
60
+ rubygems_version: 3.1.4
59
61
  signing_key:
60
62
  specification_version: 4
61
63
  summary: Glia REST API errors