carioca 2.1.6 → 2.1.7

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: 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