error_response 1.2.1 → 1.3.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 +4 -4
- data/lib/error_response/configuration.rb +2 -1
- data/lib/error_response/helper.rb +7 -1
- data/lib/error_response.rb +25 -0
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7d91963ba5d4748c624399297910694a667f48edd4f92ff482feae57dbd2239c
|
|
4
|
+
data.tar.gz: 6a10d977fb3c2f6cdfdcdcb5e33c932047b5dc5a59d5e682c0b7d9c777d8cfab
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e4e315d549f078c8c0208587b6df1983d0e941f8b971bb670d7eb86d088a0b14dbe96a9d64a2ebba38bc91536348091abab22fb5ac0b0fe1a84bea4b09f5140c
|
|
7
|
+
data.tar.gz: cb876fa2e569a4f59e8e661c003b1c926c57b6d86fead6e0f457cff079f2a8f4337e855c91971d0f3f1e4750ea06b4f135b587367f75a43aa7b4e0e6d8f2f1ff
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
module ErrorResponse
|
|
4
4
|
class Configuration
|
|
5
|
-
attr_accessor :yaml_config_path
|
|
5
|
+
attr_accessor :yaml_config_path, :error_message_resolver
|
|
6
6
|
|
|
7
7
|
def initialize
|
|
8
8
|
@yaml_config_path = ENV["YAML_CONFIG_PATH"] || "config/error_response.yml"
|
|
9
|
+
@error_message_resolver = nil
|
|
9
10
|
end
|
|
10
11
|
end
|
|
11
12
|
end
|
|
@@ -17,7 +17,13 @@ module ErrorResponse
|
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
def error_response(key, error_message = nil, error_data = {})
|
|
20
|
-
|
|
20
|
+
resolved_message = ErrorResponse.resolve_error_message(
|
|
21
|
+
key: key,
|
|
22
|
+
error_message: error_message,
|
|
23
|
+
error_data: error_data,
|
|
24
|
+
context: self
|
|
25
|
+
)
|
|
26
|
+
render_content = ErrorResponse.to_api(key, resolved_message).deep_dup
|
|
21
27
|
if error_data.is_a?(Hash) && !error_data.empty?
|
|
22
28
|
render_content[:json] = render_content[:json].merge(error_data)
|
|
23
29
|
elsif error_data.is_a?(Array) && !error_data.empty?
|
data/lib/error_response.rb
CHANGED
|
@@ -9,6 +9,8 @@ require "error_response/helper"
|
|
|
9
9
|
require "error_response/request_error"
|
|
10
10
|
|
|
11
11
|
module ErrorResponse
|
|
12
|
+
RESOLVER_KEYWORD_PARAMETER_TYPES = %i[key keyreq keyrest].freeze
|
|
13
|
+
|
|
12
14
|
class << self
|
|
13
15
|
attr_writer :configuration
|
|
14
16
|
|
|
@@ -41,8 +43,25 @@ module ErrorResponse
|
|
|
41
43
|
}
|
|
42
44
|
end
|
|
43
45
|
|
|
46
|
+
def resolve_error_message(key:, error_message: nil, error_data: {}, context: nil)
|
|
47
|
+
resolver = configuration.error_message_resolver
|
|
48
|
+
return error_message unless resolver.respond_to?(:call)
|
|
49
|
+
|
|
50
|
+
call_resolver(resolver, key, error_message, error_data, context)
|
|
51
|
+
rescue StandardError
|
|
52
|
+
error_message
|
|
53
|
+
end
|
|
54
|
+
|
|
44
55
|
private
|
|
45
56
|
|
|
57
|
+
def call_resolver(resolver, key, error_message, error_data, context)
|
|
58
|
+
if resolver_parameters(resolver).any? { |parameter| RESOLVER_KEYWORD_PARAMETER_TYPES.include?(parameter[0]) }
|
|
59
|
+
resolver.call(key: key, error_message: error_message, error_data: error_data, context: context)
|
|
60
|
+
else
|
|
61
|
+
resolver.call(key, error_message, error_data, context)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
46
65
|
def yaml_hash
|
|
47
66
|
return @hash unless @hash.nil?
|
|
48
67
|
|
|
@@ -101,5 +120,11 @@ module ErrorResponse
|
|
|
101
120
|
NilClass
|
|
102
121
|
]
|
|
103
122
|
end
|
|
123
|
+
|
|
124
|
+
def resolver_parameters(resolver)
|
|
125
|
+
resolver.parameters
|
|
126
|
+
rescue StandardError
|
|
127
|
+
resolver.method(:call).parameters
|
|
128
|
+
end
|
|
104
129
|
end
|
|
105
130
|
end
|