artirix_data_models 1.0.0.beta6 → 1.0.0.beta8

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
  SHA1:
3
- metadata.gz: 4a8b87df8ccaea05bc825bbe952f88d06805fbc4
4
- data.tar.gz: d0f21669f9f4ab77c50fa59b816837cd0cd61f81
3
+ metadata.gz: fa6ee7f791b64b681b98229190120f8ba464a0f1
4
+ data.tar.gz: 88831d196f2b2c278cedfae4f5e3dd3ca71230e6
5
5
  SHA512:
6
- metadata.gz: a5a08d64a32f2420d158508acd42d99d44b58a34b3863991215f5a9f2e9bec52232536336765394f970636c22faedf13eb6258431794115796aaaaa68eed0762
7
- data.tar.gz: 866e9613bc537ebf3ec1b6940f6f12e5e2f2000e2211d2fd1ee8845b60d6f13a2bbe980278d8a9a2a47ac65205ad7f0d42bbd21fc1e8fe62f28265590aea34d4
6
+ metadata.gz: e9ff61cc1ed744df94441200b85fd1ecc6213ab5f25c0d94bbdc0de7d151a2bc33f6a3241448e801c501d993d9333abe9ab28db7b411589f900a122f0d90ba48
7
+ data.tar.gz: 61d8998bdc314ce0e3bdbe94f80826858b4b8d80500f3af51fb8ef5bebe6375e99510e76ba5b16a9e5f2d1c3abb59a3e61c05247dc9502b1f43f56e1c74ba112
data/README.md CHANGED
@@ -320,6 +320,21 @@ end
320
320
 
321
321
  ## Changes
322
322
 
323
+ ### 1.0.0.beta8(YANKED)
324
+
325
+ - allow non json responses in gateway `#perform`, by passing `json_parse_response: false`.
326
+
327
+ Example:
328
+
329
+ ```ruby
330
+ gateway.post path_to_be_bad_json, json_parse_response: false
331
+ # => gives the response.body to the response_adaptor with no json parsing
332
+ ```
333
+
334
+ - adds support in DAOs to pass that option to the Gateway.
335
+
336
+ ### ~1.0.0.beta7~ (YANKED)
337
+
323
338
  ### 1.0.0.beta6
324
339
 
325
340
  - prevent crash if the parsed_data is nil when building a new model from the single response.
@@ -175,6 +175,7 @@ class ArtirixDataModels::BasicModelDAO
175
175
  def perform_get(path,
176
176
  fake: nil,
177
177
  response_adaptor: nil,
178
+ json_parse_response: true,
178
179
  body: nil,
179
180
  fake_response: nil,
180
181
  cache_adaptor: nil,
@@ -188,6 +189,7 @@ class ArtirixDataModels::BasicModelDAO
188
189
 
189
190
  g.get path,
190
191
  response_adaptor: response_adaptor,
192
+ json_parse_response: json_parse_response,
191
193
  body: body,
192
194
  timeout: timeout,
193
195
  fake: fake,
@@ -200,6 +202,7 @@ class ArtirixDataModels::BasicModelDAO
200
202
  def perform_post(path,
201
203
  fake: nil,
202
204
  response_adaptor: nil,
205
+ json_parse_response: true,
203
206
  body: nil,
204
207
  fake_response: nil,
205
208
  cache_adaptor: nil,
@@ -213,6 +216,7 @@ class ArtirixDataModels::BasicModelDAO
213
216
 
214
217
  g.post path,
215
218
  response_adaptor: response_adaptor,
219
+ json_parse_response: json_parse_response,
216
220
  body: body,
217
221
  timeout: timeout,
218
222
  fake: fake,
@@ -224,6 +228,7 @@ class ArtirixDataModels::BasicModelDAO
224
228
  def perform_put(path,
225
229
  fake: nil,
226
230
  response_adaptor: nil,
231
+ json_parse_response: true,
227
232
  body: nil,
228
233
  fake_response: nil,
229
234
  cache_adaptor: nil,
@@ -237,6 +242,7 @@ class ArtirixDataModels::BasicModelDAO
237
242
 
238
243
  g.put path,
239
244
  response_adaptor: response_adaptor,
245
+ json_parse_response: json_parse_response,
240
246
  body: body,
241
247
  timeout: timeout,
242
248
  fake: fake,
@@ -248,6 +254,7 @@ class ArtirixDataModels::BasicModelDAO
248
254
  def perform_patch(path,
249
255
  fake: nil,
250
256
  response_adaptor: nil,
257
+ json_parse_response: true,
251
258
  body: nil,
252
259
  fake_response: nil,
253
260
  cache_adaptor: nil,
@@ -261,6 +268,7 @@ class ArtirixDataModels::BasicModelDAO
261
268
 
262
269
  g.patch path,
263
270
  response_adaptor: response_adaptor,
271
+ json_parse_response: json_parse_response,
264
272
  body: body,
265
273
  timeout: timeout,
266
274
  fake: fake,
@@ -272,6 +280,7 @@ class ArtirixDataModels::BasicModelDAO
272
280
  def perform_delete(path,
273
281
  fake: nil,
274
282
  response_adaptor: nil,
283
+ json_parse_response: true,
275
284
  body: nil,
276
285
  fake_response: nil,
277
286
  cache_adaptor: nil,
@@ -285,6 +294,7 @@ class ArtirixDataModels::BasicModelDAO
285
294
 
286
295
  g.delete path,
287
296
  response_adaptor: response_adaptor,
297
+ json_parse_response: json_parse_response,
288
298
  body: body,
289
299
  timeout: timeout,
290
300
  fake: fake,
@@ -51,6 +51,7 @@ class ArtirixDataModels::DataGateway
51
51
  authorization_bearer: nil,
52
52
  authorization_token_hash: nil,
53
53
  headers: nil,
54
+ json_parse_response: true,
54
55
  **_ignored_options)
55
56
 
56
57
  if fake
@@ -80,6 +81,7 @@ class ArtirixDataModels::DataGateway
80
81
  end
81
82
 
82
83
  parse_response result: result,
84
+ json_parse_response: json_parse_response,
83
85
  response_adaptor: response_adaptor,
84
86
  method: method,
85
87
  path: path
@@ -193,11 +195,13 @@ class ArtirixDataModels::DataGateway
193
195
  end
194
196
  end
195
197
 
196
- def parse_response(result:, response_adaptor:, path:, method:)
197
- if result.present?
198
+ def parse_response(result:, response_adaptor:, path:, method:, json_parse_response: true)
199
+ if result.blank?
200
+ parsed_response = nil
201
+ elsif json_parse_response
198
202
  parsed_response = Oj.load result, symbol_keys: true
199
203
  else
200
- parsed_response = nil
204
+ parsed_response = result
201
205
  end
202
206
 
203
207
  if response_adaptor.present?
@@ -1,3 +1,3 @@
1
1
  module ArtirixDataModels
2
- VERSION = '1.0.0.beta6'
2
+ VERSION = '1.0.0.beta8'
3
3
  end
@@ -11,6 +11,8 @@ RSpec.describe ArtirixDataModels::DataGateway, type: :model do
11
11
  Given(:token_hash2) { { x: 'some', y: 'whaat' } }
12
12
  Given(:token_str2) { Faraday::Request::Authorization.build_hash('Token', token_hash2) }
13
13
 
14
+ Given(:non_json_response) { 'oh yeah' }
15
+
14
16
  describe '.new' do
15
17
  context 'without connection' do
16
18
  Given(:connection_url) { 'http://example.com/other' }
@@ -348,31 +350,31 @@ RSpec.describe ArtirixDataModels::DataGateway, type: :model do
348
350
 
349
351
  connection_stubs.get(path_to_be_not_found) { |env| [404, {}, ''] }
350
352
  connection_stubs.get(path_to_fail) { |env| [500, {}, ''] }
351
- connection_stubs.get(path_to_be_bad_json) { |env| [200, {}, 'oh yeah'] }
353
+ connection_stubs.get(path_to_be_bad_json) { |env| [200, {}, non_json_response] }
352
354
  connection_stubs.get(path_to_be_empty) { |env| [200, {}, ''] }
353
355
 
354
356
  # stub posts
355
357
  connection_stubs.post(path_to_be_not_found) { |env| [404, {}, ''] }
356
358
  connection_stubs.post(path_to_fail) { |env| [500, {}, ''] }
357
- connection_stubs.post(path_to_be_bad_json) { |env| [200, {}, 'oh yeah'] }
359
+ connection_stubs.post(path_to_be_bad_json) { |env| [200, {}, non_json_response] }
358
360
  connection_stubs.post(path_to_be_empty) { |env| [200, {}, ''] }
359
361
 
360
362
  # stub put
361
363
  connection_stubs.put(path_to_be_not_found) { |env| [404, {}, ''] }
362
364
  connection_stubs.put(path_to_fail) { |env| [500, {}, ''] }
363
- connection_stubs.put(path_to_be_bad_json) { |env| [200, {}, 'oh yeah'] }
365
+ connection_stubs.put(path_to_be_bad_json) { |env| [200, {}, non_json_response] }
364
366
  connection_stubs.put(path_to_be_empty) { |env| [200, {}, ''] }
365
367
 
366
368
  # stub patch
367
369
  connection_stubs.patch(path_to_be_not_found) { |env| [404, {}, ''] }
368
370
  connection_stubs.patch(path_to_fail) { |env| [500, {}, ''] }
369
- connection_stubs.patch(path_to_be_bad_json) { |env| [200, {}, 'oh yeah'] }
371
+ connection_stubs.patch(path_to_be_bad_json) { |env| [200, {}, non_json_response] }
370
372
  connection_stubs.patch(path_to_be_empty) { |env| [200, {}, ''] }
371
373
 
372
374
  # stub delete
373
375
  connection_stubs.delete(path_to_be_not_found) { |env| [404, {}, ''] }
374
376
  connection_stubs.delete(path_to_fail) { |env| [500, {}, ''] }
375
- connection_stubs.delete(path_to_be_bad_json) { |env| [200, {}, 'oh yeah'] }
377
+ connection_stubs.delete(path_to_be_bad_json) { |env| [200, {}, non_json_response] }
376
378
  connection_stubs.delete(path_to_be_empty) { |env| [200, {}, ''] }
377
379
  end
378
380
 
@@ -454,8 +456,15 @@ RSpec.describe ArtirixDataModels::DataGateway, type: :model do
454
456
  end
455
457
 
456
458
  context 'when receiving bad json' do
457
- When(:result) { gateway.post path_to_be_bad_json }
458
- Then { result == Failure(ArtirixDataModels::DataGateway::ParseError) }
459
+ context 'normal behaviour' do
460
+ When(:result) { gateway.post path_to_be_bad_json }
461
+ Then { result == Failure(ArtirixDataModels::DataGateway::ParseError) }
462
+ end
463
+
464
+ context 'if defining `json_parse_response: false`' do
465
+ When(:result) { gateway.post path_to_be_bad_json, json_parse_response: false }
466
+ Then { result == non_json_response}
467
+ end
459
468
  end
460
469
 
461
470
  context 'when receiving empty response' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: artirix_data_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.beta6
4
+ version: 1.0.0.beta8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo Turiño
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-21 00:00:00.000000000 Z
11
+ date: 2018-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport