artirix_data_models 0.14.0 → 0.14.1

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