carioca 2.1.6 → 2.1.7
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/VERSION +1 -1
- data/lib/carioca/services/finisher.rb +23 -4
- data/samples/test.rb +25 -4
- 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: 000312fa89e07fae328f829c0fc917ac7aac1d4741447c60346be8b35555973e
|
4
|
+
data.tar.gz: 4126612f810bbdd6ab47615b070e62751f9f957a77e894cdc1a6def4b2e6bc84
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd7cb77316e8932226c3089e32e2fb1e8d6edf9b8c6647517643cc7216356ecf8ae4445ad7e6bf02a34f00e3d220a8c77744ca829d03277db584b6c82aa5dc2f
|
7
|
+
data.tar.gz: 9134d7609f2ac948dfe667f6e200091ce693983a8ce6df2394cae7047d23bb06064984dfa8cd92ea6919bb12c719de36a9b45fcbfbf829c53f54b019031bf4b0
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.1.
|
1
|
+
2.1.7
|
@@ -12,6 +12,17 @@ module Carioca
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
+
|
16
|
+
class AlternativeCatcher < StandardError
|
17
|
+
attr_reader :return_case, :data
|
18
|
+
|
19
|
+
def initialize(*arg, return_case: :status_ko, data: nil)
|
20
|
+
super(*arg)
|
21
|
+
@return_case = return_case
|
22
|
+
@data = data
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
15
26
|
# Exiter namespace
|
16
27
|
class Finisher
|
17
28
|
DEFAULT_FINISHERS_SPECS = {
|
@@ -95,12 +106,15 @@ module Carioca
|
|
95
106
|
data = yield if block_given?
|
96
107
|
result = structured ? do_return(return_case:).merge({ data: }) : data
|
97
108
|
rescue StandardError => e
|
98
|
-
key =
|
99
|
-
more =
|
100
|
-
|
109
|
+
key = :status_ko
|
110
|
+
more = "#{e.class} : #{e.message}"
|
111
|
+
if e.respond_to?(:error_case)
|
112
|
+
result = do_return(return_case: e.error_case, more: e.message)
|
113
|
+
elsif e.respond_to?(:return_case)
|
114
|
+
result = structured ? do_return(return_case: e.return_case, more: e.message).merge({ data: e.data}) : e.data
|
115
|
+
end
|
101
116
|
end
|
102
117
|
if status && structured && json
|
103
|
-
p result
|
104
118
|
{ status: result[:code], data: JSON.pretty_generate(JSON.parse(result.to_json)) }
|
105
119
|
elsif json
|
106
120
|
JSON.pretty_generate(JSON.parse(result.to_json)) if json
|
@@ -109,6 +123,11 @@ module Carioca
|
|
109
123
|
end
|
110
124
|
end
|
111
125
|
|
126
|
+
def secure_alternative(message: , return_case: :accepted, data: )
|
127
|
+
raise AlternativeCatcher.new(message, return_case: return_case, data: data)
|
128
|
+
end
|
129
|
+
|
130
|
+
|
112
131
|
def secure_execute!(exit_case: :success_exit)
|
113
132
|
begin
|
114
133
|
more = yield
|
data/samples/test.rb
CHANGED
@@ -175,28 +175,49 @@ puts test
|
|
175
175
|
output.item 'api return, no-json, no-structured but with secure_raise'
|
176
176
|
test = finisher.secure_api_return(return_case: :status_ok, structured: false, json: false) do
|
177
177
|
finisher.secure_raise message: 'error !', error_case: :status_ko
|
178
|
-
|
178
|
+
{ test: 'test'}
|
179
179
|
end
|
180
180
|
puts test
|
181
181
|
|
182
182
|
output.item 'api return, json, structured but with secure_raise'
|
183
183
|
test = finisher.secure_api_return(return_case: :status_ok, structured: true, json: true) do
|
184
184
|
finisher.secure_raise message: 'error !', error_case: :status_ko
|
185
|
-
'test'
|
185
|
+
test = { test: 'test'}
|
186
|
+
test
|
186
187
|
end
|
187
188
|
puts test[:status]
|
188
189
|
puts test[:data]
|
189
190
|
|
190
191
|
output.item 'api return, json, structured'
|
191
192
|
test = finisher.secure_api_return(return_case: :status_ok, structured: true, json: true) do
|
192
|
-
'test'
|
193
|
+
test = { test: 'test' }
|
194
|
+
test
|
193
195
|
end
|
194
196
|
puts test[:status]
|
195
197
|
puts test[:data]
|
196
198
|
|
199
|
+
|
200
|
+
output.item 'api return, json, structured with alternative'
|
201
|
+
test = finisher.secure_api_return(return_case: :status_ok, structured: true, json: true) do
|
202
|
+
test = { test: 'test' }
|
203
|
+
finisher.secure_alternative message: "test alernative", return_case: :accepted, data: test
|
204
|
+
test
|
205
|
+
end
|
206
|
+
puts test[:status]
|
207
|
+
puts test[:data]
|
208
|
+
|
209
|
+
|
210
|
+
output.item 'api return, json, structured with alternative'
|
211
|
+
test = finisher.secure_api_return(return_case: :status_ok, structured: false, json: false) do
|
212
|
+
test = { test: 'test' }
|
213
|
+
finisher.secure_alternative message: "test alernative", return_case: :accepted, data: test
|
214
|
+
test
|
215
|
+
end
|
216
|
+
puts test
|
217
|
+
|
197
218
|
output.item 'api return, json, structured with status=false'
|
198
219
|
test = finisher.secure_api_return(return_case: :status_ok, structured: true, json: true, status: false) do
|
199
|
-
'test'
|
220
|
+
{ test: 'test'}
|
200
221
|
end
|
201
222
|
puts test
|
202
223
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carioca
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Romain GEORGES
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-04-
|
11
|
+
date: 2024-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: deep_merge
|