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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 59956550392bbf8603dd8426a0595afb7cd207bb6929adac7a183eca58acc400
4
- data.tar.gz: 95addcdb4fde913f5ec4dc4a15184634a24c27522e4f93a26b5912c55561d0db
3
+ metadata.gz: 000312fa89e07fae328f829c0fc917ac7aac1d4741447c60346be8b35555973e
4
+ data.tar.gz: 4126612f810bbdd6ab47615b070e62751f9f957a77e894cdc1a6def4b2e6bc84
5
5
  SHA512:
6
- metadata.gz: a26bacd589861a1543184a73791c3ea37ac0f05742efe82a414a5dc243f448824d10d9973f5b1c73fc8208fc167c004d8e67d82390c9bf6583695d673e645bf0
7
- data.tar.gz: 48001979dde2a20fe79c140f72739b2d9d7dd93523082edd11c85f720225e14428fd6873e4e81c68d82c78fd51b43858e8156819ee76f78a4ae1044c69fede9e
6
+ metadata.gz: bd7cb77316e8932226c3089e32e2fb1e8d6edf9b8c6647517643cc7216356ecf8ae4445ad7e6bf02a34f00e3d220a8c77744ca829d03277db584b6c82aa5dc2f
7
+ data.tar.gz: 9134d7609f2ac948dfe667f6e200091ce693983a8ce6df2394cae7047d23bb06064984dfa8cd92ea6919bb12c719de36a9b45fcbfbf829c53f54b019031bf4b0
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.1.6
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 = e.respond_to?(:error_case) ? e.error_case : :status_ko
99
- more = e.respond_to?(:error_case) ? e.message : "#{e.class} : #{e.message}"
100
- result = do_return return_case: key, more:
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
- 'test'
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.6
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-17 00:00:00.000000000 Z
11
+ date: 2024-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: deep_merge