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 +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/scorpio/model.rb +20 -16
- data/lib/scorpio/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 22844b5d53c060f169a666bb1d0d2648cd82248b
|
4
|
+
data.tar.gz: 8b5a502e30aa099bdefed739a3be484eaf554f0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ae0e2820929636321a1dfd4b6cfaf155d45ed3b9bff22f11a6d21a35e6ded3b0e51b5499833e8e097f8bdd2f20d6b29348b29de25573b10dc2a2b91b16c5dce
|
7
|
+
data.tar.gz: 0f52f15981cf3e840c6381100afb59b8aad162e8ee6d906e5b95352050ad49ff2ea916d4e931a824f681d1e2b2985f9d9b9b42cddc9c05adf84c97fd6d4adafb
|
data/CHANGELOG.md
CHANGED
data/lib/scorpio/model.rb
CHANGED
@@ -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)
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
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
|
data/lib/scorpio/version.rb
CHANGED
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.
|
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-
|
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.
|
289
|
+
rubygems_version: 2.6.11
|
290
290
|
signing_key:
|
291
291
|
specification_version: 4
|
292
292
|
summary: Scorpio REST client
|