swagger_model 0.4.5 → 0.4.6
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/Gemfile.lock +2 -2
- data/lib/swagger_model.rb +30 -0
- data/lib/swagger_model/included.rb +2 -0
- data/lib/swagger_model/model.rb +19 -5
- data/lib/swagger_model/relation.rb +1 -0
- data/lib/swagger_model/relation_data.rb +1 -0
- data/lib/swagger_model/relation_data_array.rb +1 -0
- data/lib/swagger_model/relationships.rb +2 -0
- data/lib/swagger_model/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: a5ec4250155f5596fbfdb895c1fc77431e25f5f4
|
4
|
+
data.tar.gz: dcf3da9f4d97070fe08cce538785e8dac2317388
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 09134da0a1689dae2551e7afeec93553e8ce9f61124c17839092c198ee0fd828d9602d193026b4932c399d967f01a2f5ed557b07b3e542d6c00f1a27d213bab0
|
7
|
+
data.tar.gz: d46e008d49dfc2be4def4223fb2e20e7de85426704346a4812cd9fe917b5196bc139a7dcd6ce9493d730558a5650dcd17ee17f08dfcb011388903cdf56f18144
|
data/Gemfile.lock
CHANGED
data/lib/swagger_model.rb
CHANGED
@@ -310,6 +310,12 @@ module SwaggerModel
|
|
310
310
|
obj['required'] = required
|
311
311
|
obj
|
312
312
|
end
|
313
|
+
def self.result_to_yaml(result)
|
314
|
+
models = {}
|
315
|
+
result['models'].each { |key, value| models.merge!(value) }
|
316
|
+
data = result['responses'].merge(models)
|
317
|
+
data.to_yaml
|
318
|
+
end
|
313
319
|
def self.create_from_json(params)
|
314
320
|
response = {}.to_json
|
315
321
|
json_string = params[:json_string]
|
@@ -329,15 +335,20 @@ module SwaggerModel
|
|
329
335
|
response_model[response_name]['properties'] = {}
|
330
336
|
model = {}
|
331
337
|
|
338
|
+
# For validate
|
339
|
+
modelData = []
|
340
|
+
|
332
341
|
# Create response data
|
333
342
|
if response.has_key?('data')
|
334
343
|
data = response['data']
|
335
344
|
case data.class.to_s
|
336
345
|
when 'Hash'
|
337
346
|
m = Model.new(data)
|
347
|
+
modelData.push(m)
|
338
348
|
response_model[response_name]['properties']['data'] = m.to_swagger_hash(model)
|
339
349
|
when 'Array'
|
340
350
|
m = Model.new(data.first)
|
351
|
+
modelData.push(m)
|
341
352
|
response_model[response_name]['properties']['data'] = {
|
342
353
|
'type' => 'array',
|
343
354
|
'items' => m.to_swagger_hash(model)
|
@@ -348,6 +359,7 @@ module SwaggerModel
|
|
348
359
|
# Create included key models but not add included key to response
|
349
360
|
if response.has_key?('included')
|
350
361
|
included = Included.new(response['included'])
|
362
|
+
modelData.concat(included.models)
|
351
363
|
included.models_to_swagger_hash(model)
|
352
364
|
end
|
353
365
|
|
@@ -388,6 +400,24 @@ module SwaggerModel
|
|
388
400
|
response_model['ErrorModelMeta'] = ErrorModelMeta.new().to_swagger_hash
|
389
401
|
end
|
390
402
|
|
403
|
+
# validate models
|
404
|
+
modelTypes = modelData.map { |e| e.type }
|
405
|
+
modelData.each do |m|
|
406
|
+
next if m.relationships.nil?
|
407
|
+
next if m.relationships.relationships.empty?
|
408
|
+
m.relationships.relationships.each do |e|
|
409
|
+
next if e['data'].relation.nil?
|
410
|
+
type = e['data'].relation.type
|
411
|
+
if !modelTypes.include?(type)
|
412
|
+
newModel = Model.new({
|
413
|
+
'id' => '',
|
414
|
+
'type' => type
|
415
|
+
})
|
416
|
+
newModel.to_swagger_hash(model)
|
417
|
+
end
|
418
|
+
end
|
419
|
+
end
|
420
|
+
|
391
421
|
# Set required
|
392
422
|
response_model[response_name]['required'] = response_model[response_name]['properties'].keys
|
393
423
|
|
data/lib/swagger_model/model.rb
CHANGED
@@ -4,11 +4,15 @@ require_relative 'attributes'
|
|
4
4
|
module SwaggerModel
|
5
5
|
module SwaggerV2
|
6
6
|
class Model
|
7
|
+
attr_accessor :relationships, :type
|
8
|
+
|
7
9
|
def initialize(hash)
|
8
10
|
@id = hash['id']
|
9
11
|
@type = hash['type']
|
10
12
|
@model_name = ActiveSupport::Inflector.classify(@type.gsub('-', '_'))
|
11
|
-
|
13
|
+
if !hash['attributes'].nil?
|
14
|
+
@attributes = Attributes.new(hash['attributes'], @model_name)
|
15
|
+
end
|
12
16
|
if !hash['relationships'].nil?
|
13
17
|
@relationships = Relationships.new(hash['relationships'])
|
14
18
|
end
|
@@ -27,11 +31,21 @@ module SwaggerModel
|
|
27
31
|
'type' => {
|
28
32
|
'type' => 'string',
|
29
33
|
'example' => @type
|
30
|
-
}
|
31
|
-
|
32
|
-
|
34
|
+
}
|
35
|
+
},
|
36
|
+
'required' => [
|
37
|
+
'id',
|
38
|
+
'type'
|
39
|
+
]
|
33
40
|
}
|
34
|
-
|
41
|
+
unless @attributes.nil?
|
42
|
+
hash['properties']['attributes'] = @attributes.to_swagger_hash(aModel)
|
43
|
+
hash['required'].push('attributes')
|
44
|
+
end
|
45
|
+
unless @relationships.nil?
|
46
|
+
hash['properties']['relationships'] = @relationships.to_swagger_hash(aModel, @model_name)
|
47
|
+
hash['required'].push('relationships')
|
48
|
+
end
|
35
49
|
aModel[@model_name] = hash
|
36
50
|
|
37
51
|
{
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: swagger_model
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- marumemomo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -115,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
115
115
|
version: '0'
|
116
116
|
requirements: []
|
117
117
|
rubyforge_project:
|
118
|
-
rubygems_version: 2.5.
|
118
|
+
rubygems_version: 2.5.1
|
119
119
|
signing_key:
|
120
120
|
specification_version: 4
|
121
121
|
summary: swagger_model
|