artirix_data_models 0.14.0 → 0.14.1

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: 9a060a4fa04fce00cde5999d99498e7b15e46485
4
- data.tar.gz: bc3c22509e46bd8474f4c60641d872fa1e06d882
3
+ metadata.gz: 46351acd75da3e9389df085d1ac1f2c0650b8170
4
+ data.tar.gz: dbc025033b44bafb353808a79677a0cd26f1d168
5
5
  SHA512:
6
- metadata.gz: a73b7fa9d687ec9acc1b1d9b6e63a61db690c6bf0289f4ef21cca2aa597f3535cd60aa212daac6d1a00d57062187bc04ed26116e9866ed0ae2601c4f54d2ac46
7
- data.tar.gz: a9280128257047ed0ba48acc5fe4c03dd5585f4dfac5a6f1667e62da99ad1cbe534346ab7aa8f9fc32a1e4803c527a8a1b649515f430048fcbde5123c6b56d9f
6
+ metadata.gz: 9e0688236b185df19b6b5aeec4ea71c96b3a13a00781db5e53d40961705e0ca19eb9d6451418641dfe970c2b72d9035ba9d1bddb4aa9e02c395c10158dfe4d7b
7
+ data.tar.gz: 6cf4baac1f99bc41780b602a1ea7f8c0ec52217d1c6b7dec026e79c9f8bd48a0d1687b5bffc9c7742b3414fd880f4e4c24d46657f5bf60fe083762df2549aac7
data/README.md CHANGED
@@ -268,6 +268,18 @@ end
268
268
 
269
269
  ## Changes
270
270
 
271
+ ### 0.14.1
272
+ - Exceptions now with `data_hash` and ability to be raised with message, options, or both.
273
+ - Cache Adaptors now store the data hash of the NotFound exception, and a new one is built and raised when reading a cached NotFound.
274
+
275
+ ```ruby
276
+ raise ArtirixDataModels::DataGateway::NotFound, 'blah blah'
277
+ raise ArtirixDataModels::DataGateway::NotFound, path: 'something', message: 'blah blah'
278
+ raise ArtirixDataModels::DataGateway::NotFound.new('xxx')
279
+ raise ArtirixDataModels::DataGateway::NotFound.new(path: 'x')
280
+ raise ArtirixDataModels::DataGateway::NotFound.new('Something', path: 'x')
281
+ ```
282
+
271
283
  ### 0.14.0
272
284
  - `Model`: added static `mark_full_mode_by_default`: if called in the model definition it will make all new models full mode by default
273
285
 
@@ -68,7 +68,7 @@ class ArtirixDataModels::CachedActionAdaptor
68
68
  cache_result [STATUS_OK, result]
69
69
  result
70
70
  rescue ArtirixDataModels::DataGateway::NotFound => e
71
- cache_result [STATUS_NOT_FOUND, e.message]
71
+ cache_result [STATUS_NOT_FOUND, e.data_hash]
72
72
  raise e
73
73
  end
74
74
 
@@ -74,7 +74,10 @@ class ArtirixDataModels::DataGateway
74
74
  end
75
75
  end
76
76
  rescue Faraday::ConnectionFailed => e
77
- raise ConnectionError.new(path: path, method: method), "method: #{method}, path: #{path}, error: #{e}"
77
+ raise ConnectionError,
78
+ path: path,
79
+ method: method,
80
+ message: "method: #{method}, path: #{path}, error: #{e}"
78
81
  end
79
82
 
80
83
  def body_to_json(body)
@@ -100,7 +103,11 @@ class ArtirixDataModels::DataGateway
100
103
  end
101
104
 
102
105
  rescue Oj::ParseError => e
103
- raise ParseError.new(path: path, method: method, response_body: result), e.message
106
+ raise ParseError,
107
+ path: path,
108
+ method: method,
109
+ response_body: result,
110
+ message: e.message
104
111
  end
105
112
 
106
113
  #######################
@@ -119,7 +126,11 @@ class ArtirixDataModels::DataGateway
119
126
  return response.body if response.success?
120
127
 
121
128
  klass = exception_for_status(response.status)
122
- raise klass.new(path: path, method: method, response_body: response.body, response_status: response.status)
129
+ raise klass,
130
+ path: path,
131
+ method: method,
132
+ response_body: response.body,
133
+ response_status: response.status
123
134
  end
124
135
 
125
136
  def self.exception_for_status(response_status)
@@ -183,13 +194,37 @@ class ArtirixDataModels::DataGateway
183
194
  end
184
195
 
185
196
  class Error < StandardError
186
- attr_reader :path, :method, :response_status, :response_body
197
+ attr_reader :path, :method, :response_status, :response_body, :message
198
+
199
+ alias_method :msg, :message
200
+
201
+ def initialize(*args)
202
+ case args.size
203
+ when 0
204
+ message = nil
205
+ options = {}
206
+ when 1
207
+ if args.first.kind_of? Hash
208
+ options = args.first
209
+ message = nil
210
+ else
211
+ message = args.first
212
+ options = {}
213
+ end
214
+ else
215
+ message = args[0]
216
+ options = args[1]
187
217
 
188
- def initialize(path: nil, method: nil, response_status: nil, response_body: nil)
189
- @path = path
190
- @method = method
191
- @response_status = response_status
192
- @response_body = response_body
218
+ if message.kind_of? Hash
219
+ options, message = message, options
220
+ end
221
+ end
222
+
223
+ if message.present?
224
+ options[:message] = message
225
+ end
226
+
227
+ build_from_options(options) if options.present?
193
228
  end
194
229
 
195
230
  def json_response_body
@@ -210,11 +245,37 @@ class ArtirixDataModels::DataGateway
210
245
  method: method,
211
246
  response_status: response_status,
212
247
  response_body: response_body,
213
- message: msg,
248
+ message: message,
214
249
  }.select { |_, v| v.present? }.map { |k, v| "#{k}: #{v.inspect}" }
215
250
 
216
251
  "#{self.class}: #{parts.join ', '}"
217
252
  end
253
+
254
+ def data_hash
255
+ {
256
+ class: self.class.to_s,
257
+ path: path,
258
+ method: method,
259
+ response_status: response_status,
260
+ response_body: response_body,
261
+ message: message,
262
+ }
263
+ end
264
+
265
+ # for testing
266
+ def matches?(other)
267
+ other.kind_of? self.class
268
+ end
269
+
270
+ private
271
+
272
+ def build_from_options(path: nil, method: nil, response_status: nil, response_body: nil, message: nil, **_other)
273
+ @path = path
274
+ @method = method
275
+ @response_status = response_status
276
+ @response_body = response_body
277
+ @message = message.presence || self.class.to_s
278
+ end
218
279
  end
219
280
 
220
281
  class ParseError < Error
@@ -1,3 +1,3 @@
1
1
  module ArtirixDataModels
2
- VERSION = '0.14.0'
2
+ VERSION = '0.14.1'
3
3
  end
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: 0.14.0
4
+ version: 0.14.1
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: 2016-03-01 00:00:00.000000000 Z
11
+ date: 2016-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport