scorpio 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/scorpio/model.rb +26 -11
- data/lib/scorpio/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec3a7a7b122c8c4b3791f1b22db539efd241dc33
|
4
|
+
data.tar.gz: dbdf6eeaf02f1830326aa4e1ec0c10649fd1107e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 623f45a68e0d16d10bd561f8d511c45a842f0f456a34f3a4ae0acae75ad1b4800af9ca3ca36eb8119d07e370975a5ce97c38455a216021a3f2ddd96677259197
|
7
|
+
data.tar.gz: 14d553f686f25457c4e7257d8dee188b4d3c5ed4fef4646d041b9eef23eafaddcd2ed231c4d1a1348b4c5c8846c18f5905b350077ccc4677452423b0df821afb
|
data/lib/scorpio/model.rb
CHANGED
@@ -189,13 +189,14 @@ module Scorpio
|
|
189
189
|
end
|
190
190
|
|
191
191
|
def call_api_method(method_name, call_params: nil, model_attributes: nil)
|
192
|
-
call_params = Scorpio.stringify_symbol_keys(call_params
|
192
|
+
call_params = Scorpio.stringify_symbol_keys(call_params) if call_params.is_a?(Hash)
|
193
193
|
model_attributes = Scorpio.stringify_symbol_keys(model_attributes || {})
|
194
194
|
method_desc = api_description['resources'][self.resource_name]['methods'][method_name]
|
195
195
|
http_method = method_desc['httpMethod'].downcase.to_sym
|
196
196
|
path_template = Addressable::Template.new(method_desc['path'])
|
197
|
-
template_params = model_attributes
|
198
|
-
|
197
|
+
template_params = model_attributes
|
198
|
+
template_params = template_params.merge(call_params) if call_params.is_a?(Hash)
|
199
|
+
missing_variables = path_template.variables - template_params.keys
|
199
200
|
if missing_variables.any?
|
200
201
|
raise(ArgumentError, "path #{method_desc['path']} for method #{method_name} requires attributes " +
|
201
202
|
"which were missing: #{missing_variables.inspect}")
|
@@ -209,21 +210,34 @@ module Scorpio
|
|
209
210
|
url = Addressable::URI.parse(base_url) + path
|
210
211
|
# assume that call_params must be included somewhere. model_attributes are a source of required things
|
211
212
|
# but not required to be here.
|
212
|
-
other_params = call_params
|
213
|
+
other_params = call_params
|
214
|
+
if other_params.is_a?(Hash)
|
215
|
+
other_params.reject! { |k, _| path_template.variables.include?(k) }
|
216
|
+
end
|
213
217
|
|
214
218
|
method_desc = (((api_description['resources'] || {})[resource_name] || {})['methods'] || {})[method_name]
|
215
219
|
request_schema = deref_schema(method_desc['request'])
|
216
220
|
if request_schema
|
217
221
|
# TODO deal with model_attributes / call_params better in nested whatever
|
218
|
-
|
219
|
-
|
222
|
+
if call_params.nil?
|
223
|
+
body = request_body_for_schema(model_attributes, request_schema)
|
224
|
+
elsif call_params.is_a?(Hash)
|
225
|
+
body = request_body_for_schema(model_attributes.merge(call_params), request_schema)
|
226
|
+
body.update(call_params)
|
227
|
+
else
|
228
|
+
body = call_params
|
229
|
+
end
|
220
230
|
else
|
221
|
-
if other_params
|
222
|
-
if METHODS_WITH_BODIES.any? { |m| m == http_method.downcase }
|
231
|
+
if other_params
|
232
|
+
if METHODS_WITH_BODIES.any? { |m| m.to_s == http_method.downcase.to_s }
|
223
233
|
body = other_params
|
224
234
|
else
|
225
|
-
|
226
|
-
|
235
|
+
if other_params.is_a?(Hash)
|
236
|
+
# TODO pay more attention to 'parameters' api method attribute
|
237
|
+
url.query_values = other_params
|
238
|
+
else
|
239
|
+
raise
|
240
|
+
end
|
227
241
|
end
|
228
242
|
end
|
229
243
|
end
|
@@ -244,7 +258,8 @@ module Scorpio
|
|
244
258
|
end
|
245
259
|
|
246
260
|
response_schema = method_desc['response']
|
247
|
-
|
261
|
+
source = {'method_name' => method_name, 'call_params' => call_params, 'url' => url.to_s}
|
262
|
+
response_object_to_instances(response.body, response_schema, 'persisted' => true, 'source' => source)
|
248
263
|
end
|
249
264
|
|
250
265
|
def request_body_for_schema(object, schema)
|
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.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ethan
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04
|
11
|
+
date: 2017-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|