scorpio 0.0.1 → 0.0.2

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: 55d580a59cb3f4bfb5e14d22b3346ce4b5788bab
4
- data.tar.gz: 61d98721cca646e140e98ee92db03b7f407e9c6b
3
+ metadata.gz: 22844b5d53c060f169a666bb1d0d2648cd82248b
4
+ data.tar.gz: 8b5a502e30aa099bdefed739a3be484eaf554f0e
5
5
  SHA512:
6
- metadata.gz: 639ffe35d820fc2e5a4248a633fbd82398038f60faea79cbc5fba9efe699515b826753231e2ea513842cc726822809a0e1b25abdd26316ac970857097318fafd
7
- data.tar.gz: d9593590fa2c85f55ead1b6cd41ac5deac54020be3accaca4251e029e19170a04266cb94066b7c8473c7b02732b85209dd333fc75de11154035ec8860e2a9d57
6
+ metadata.gz: 1ae0e2820929636321a1dfd4b6cfaf155d45ed3b9bff22f11a6d21a35e6ded3b0e51b5499833e8e097f8bdd2f20d6b29348b29de25573b10dc2a2b91b16c5dce
7
+ data.tar.gz: 0f52f15981cf3e840c6381100afb59b8aad162e8ee6d906e5b95352050ad49ff2ea916d4e931a824f681d1e2b2985f9d9b9b42cddc9c05adf84c97fd6d4adafb
@@ -1,3 +1,7 @@
1
+ # v0.0.2
2
+
3
+ - Scorpio::Model minor bugfixes and refactoring
4
+
1
5
  # v0.0.1
2
6
 
3
7
  - initial Scorpio::Model
@@ -1,9 +1,12 @@
1
1
  require 'addressable/template'
2
2
  require 'json-schema'
3
+ require 'faraday_middleware'
3
4
 
4
5
  module Scorpio
5
6
  # see also Faraday::Env::MethodsWithBodies
6
7
  METHODS_WITH_BODIES = %w(post put patch options)
8
+ class RequestSchemaFailure < Error
9
+ end
7
10
 
8
11
  class Model
9
12
  class << self
@@ -225,20 +228,21 @@ module Scorpio
225
228
  end
226
229
  end
227
230
 
228
- response = connection.run_request(http_method, url, body, nil).tap do |response|
229
- error_class = Scorpio.error_classes_by_status[response.status]
230
- error_class ||= if (400..499).include?(response.status)
231
- ClientError
232
- elsif (500..599).include?(response.status)
233
- ServerError
234
- elsif !response.success?
235
- HTTPError
236
- end
237
- if error_class
238
- message = "Error calling #{method_name} on #{self}:\n" + (response.env[:raw_body] || response.env.body)
239
- raise error_class.new(message).tap { |e| e.response = response }
240
- end
231
+ response = connection.run_request(http_method, url, body, nil)
232
+
233
+ error_class = Scorpio.error_classes_by_status[response.status]
234
+ error_class ||= if (400..499).include?(response.status)
235
+ ClientError
236
+ elsif (500..599).include?(response.status)
237
+ ServerError
238
+ elsif !response.success?
239
+ HTTPError
240
+ end
241
+ if error_class
242
+ message = "Error calling #{method_name} on #{self}:\n" + (response.env[:raw_body] || response.env.body)
243
+ raise error_class.new(message).tap { |e| e.response = response }
241
244
  end
245
+
242
246
  response_schema = method_desc['response']
243
247
  response_object_to_instances(response.body, response_schema, 'persisted' => true)
244
248
  end
@@ -314,7 +318,7 @@ module Scorpio
314
318
  end
315
319
 
316
320
  def request_schema_fail(object, schema)
317
- raise("object does not conform to schema.\nobject = #{object.inspect}\nschema = #{JSON.pretty_generate(schema, quirks_mode: true)}")
321
+ raise(RequestSchemaFailure, "object does not conform to schema.\nobject = #{object.inspect}\nschema = #{JSON.pretty_generate(schema, quirks_mode: true)}")
318
322
  end
319
323
 
320
324
  def response_object_to_instances(object, schema, initialize_options = {})
@@ -330,7 +334,7 @@ module Scorpio
330
334
  pattern_schema
331
335
  end ||
332
336
  schema['additionalProperties']
333
- {key => response_object_to_instances(value, schema_for_value)}
337
+ {key => response_object_to_instances(value, schema_for_value, initialize_options)}
334
338
  end.inject(object.class.new, &:update)
335
339
  model = models_by_schema_id[schema['id']]
336
340
  if model
@@ -340,7 +344,7 @@ module Scorpio
340
344
  end
341
345
  elsif schema['type'] == 'array' && MODULES_FOR_JSON_SCHEMA_TYPES['array'].any? { |m| object.is_a?(m) }
342
346
  object.map do |element|
343
- response_object_to_instances(element, schema['items'])
347
+ response_object_to_instances(element, schema['items'], initialize_options)
344
348
  end
345
349
  else
346
350
  object
@@ -1,3 +1,3 @@
1
1
  module Scorpio
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scorpio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-03-29 00:00:00.000000000 Z
11
+ date: 2017-04-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -286,7 +286,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
286
286
  version: '0'
287
287
  requirements: []
288
288
  rubyforge_project:
289
- rubygems_version: 2.4.8
289
+ rubygems_version: 2.6.11
290
290
  signing_key:
291
291
  specification_version: 4
292
292
  summary: Scorpio REST client