open_api_import 0.10.0 → 0.10.5
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/bin/open_api_import +1 -1
- data/lib/open_api_import.rb +44 -21
- metadata +8 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf4a735fd2ca50a6f7d5070a96fef58896e1783834f586548deb943cee3aac49
|
4
|
+
data.tar.gz: 148fca2cc536cd64fbe1b70d21f902810659d67579922ae04cfaeda621400f17
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d31884dda9909b9e6bba2eec6fbfb83967a8d3d4b35e5e0826027e066a2f42c7a496d021257ec905f1b54a47da3e05177dab7bd3d7a8d0ba9ea3547edbd52166
|
7
|
+
data.tar.gz: 0c35baa4265c34312f2c2b6866a7197ecb3403a230dccdba20b03f04282674e3e97b6c1f80fd4142862788a351b759802a172a880b967de1e95a357a17cc9471
|
data/bin/open_api_import
CHANGED
data/lib/open_api_import.rb
CHANGED
@@ -150,6 +150,10 @@ class OpenApiImport
|
|
150
150
|
elsif create_method_name == :operation_id
|
151
151
|
if (name_for_module == :tags or name_for_module == :tags_file) and cont.key?(:tags) and cont[:tags].is_a?(Array) and cont[:tags].size>0
|
152
152
|
metnametmp = cont[:operationId].gsub(/^#{cont[:tags].join}[\s_]*/, '')
|
153
|
+
cont[:tags].join.split(' ').each do |tag|
|
154
|
+
metnametmp.gsub!(/^#{tag}[\s_]*/i, '')
|
155
|
+
end
|
156
|
+
metnametmp = met if metnametmp == ''
|
153
157
|
else
|
154
158
|
metnametmp = cont[:operationId]
|
155
159
|
end
|
@@ -157,6 +161,10 @@ class OpenApiImport
|
|
157
161
|
else
|
158
162
|
if (name_for_module == :tags or name_for_module == :tags_file) and cont.key?(:tags) and cont[:tags].is_a?(Array) and cont[:tags].size>0
|
159
163
|
method_name = cont[:operationId].gsub(/^#{cont[:tags].join}[\s_]*/, '')
|
164
|
+
cont[:tags].join.split(' ').each do |tag|
|
165
|
+
method_name.gsub!(/^#{tag}[\s_]*/i, '')
|
166
|
+
end
|
167
|
+
method_name = met if method_name == ''
|
160
168
|
else
|
161
169
|
method_name = cont[:operationId]
|
162
170
|
end
|
@@ -337,7 +345,11 @@ class OpenApiImport
|
|
337
345
|
|
338
346
|
body[:properties].each { |dpk, dpv|
|
339
347
|
if dpv.keys.include?(:example)
|
340
|
-
|
348
|
+
if dpv[:example].is_a?(Array) and dpv.type != 'array'
|
349
|
+
valv = dpv[:example][0]
|
350
|
+
else
|
351
|
+
valv = dpv[:example].to_s
|
352
|
+
end
|
341
353
|
else
|
342
354
|
if dpv.type == "object"
|
343
355
|
if dpv.key?(:properties)
|
@@ -367,23 +379,28 @@ class OpenApiImport
|
|
367
379
|
data_read_only << dpk
|
368
380
|
end
|
369
381
|
if dpv.keys.include?(:default)
|
370
|
-
if dpv.
|
382
|
+
if dpv[:default].nil?
|
383
|
+
data_default << "#{dpk}: nil"
|
384
|
+
elsif dpv.type != "string"
|
371
385
|
data_default << "#{dpk}: #{dpv[:default]}"
|
372
386
|
else
|
373
387
|
data_default << "#{dpk}: '#{dpv[:default]}'"
|
374
388
|
end
|
375
389
|
end
|
376
390
|
|
377
|
-
|
378
|
-
|
391
|
+
#todo: consider check default and insert it
|
392
|
+
if dpv.key?(:type)
|
393
|
+
params_data << get_examples({dpk => dpv}, :only_value, true).join
|
394
|
+
params_data[-1].chop!.chop! if params_data[-1].to_s[-2..-1]==', '
|
395
|
+
params_data.pop if params_data[-1].match?(/^\s*$/im)
|
379
396
|
else
|
380
|
-
#todo: consider check default and insert it
|
381
397
|
if valv.to_s == ""
|
382
398
|
valv = '"' + valv + '"'
|
383
399
|
end
|
400
|
+
params_data << "#{dpk}: #{valv}"
|
384
401
|
end
|
385
|
-
params_data << "#{dpk}: #{valv}"
|
386
402
|
}
|
403
|
+
|
387
404
|
if params_data.size > 0
|
388
405
|
if data_examples_all_of == true and data_examples.size > 0
|
389
406
|
data_examples[0]+=params_data
|
@@ -467,7 +484,7 @@ class OpenApiImport
|
|
467
484
|
paramst.concat params
|
468
485
|
params = paramst
|
469
486
|
end
|
470
|
-
|
487
|
+
params.uniq!
|
471
488
|
output << "def self.#{method_name} (#{params.join(", ")})"
|
472
489
|
|
473
490
|
output << "{"
|
@@ -674,10 +691,14 @@ class OpenApiImport
|
|
674
691
|
val[:type]='array'
|
675
692
|
end
|
676
693
|
if val.key?(:example)
|
677
|
-
|
678
|
-
" #{prop.to_sym}: \"#{val[:example]}\", "
|
694
|
+
if val[:example].is_a?(Array) and val.key?(:type) and val[:type]=='string'
|
695
|
+
example << " #{prop.to_sym}: \"#{val[:example][0]}\", " # only the first example
|
679
696
|
else
|
680
|
-
|
697
|
+
example << if val[:example].is_a?(String) or val[:example].is_a?(Time)
|
698
|
+
" #{prop.to_sym}: \"#{val[:example]}\", "
|
699
|
+
else
|
700
|
+
" #{prop.to_sym}: #{val[:example]}, "
|
701
|
+
end
|
681
702
|
end
|
682
703
|
elsif val.key?(:type)
|
683
704
|
format = val[:format]
|
@@ -711,14 +732,14 @@ class OpenApiImport
|
|
711
732
|
else
|
712
733
|
#todo: differ between response examples and data examples
|
713
734
|
if type == :only_value
|
714
|
-
example << get_response_examples({schema: val}).join("\n")
|
735
|
+
example << get_response_examples({schema: val}, remove_readonly).join("\n")
|
715
736
|
else
|
716
|
-
example << " #{prop.to_sym}: " + get_response_examples({schema: val}).join("\n") + ", "
|
737
|
+
example << " #{prop.to_sym}: " + get_response_examples({schema: val}, remove_readonly).join("\n") + ", "
|
717
738
|
end
|
718
739
|
end
|
719
740
|
when "object"
|
720
741
|
#todo: differ between response examples and data examples
|
721
|
-
res_ex = get_response_examples({schema: val})
|
742
|
+
res_ex = get_response_examples({schema: val}, remove_readonly)
|
722
743
|
if res_ex.size == 0
|
723
744
|
res_ex = "{ }"
|
724
745
|
else
|
@@ -736,7 +757,7 @@ class OpenApiImport
|
|
736
757
|
end
|
737
758
|
|
738
759
|
# Retrieve the response examples from the hash
|
739
|
-
private def get_response_examples(v)
|
760
|
+
private def get_response_examples(v, remove_readonly = false)
|
740
761
|
# TODO: take in consideration the case allOf, oneOf... schema.items.allOf[0].properties schema.items.allOf[1].properties
|
741
762
|
# example on https://github.com/OAI/OpenAPI-Specification/blob/master/examples/v2.0/yaml/petstore-expanded.yaml
|
742
763
|
v=v.dup
|
@@ -746,7 +767,6 @@ class OpenApiImport
|
|
746
767
|
v[:content][:'application/json'].key?(:schema)
|
747
768
|
v=v[:content][:'application/json'].dup
|
748
769
|
end
|
749
|
-
|
750
770
|
if v.key?(:examples) && v[:examples].is_a?(Hash) && v[:examples].key?(:'application/json')
|
751
771
|
if v[:examples][:'application/json'].is_a?(String)
|
752
772
|
response_example << v[:examples][:'application/json']
|
@@ -776,6 +796,7 @@ class OpenApiImport
|
|
776
796
|
else
|
777
797
|
tresp = ""
|
778
798
|
end
|
799
|
+
|
779
800
|
if tresp.is_a?(String)
|
780
801
|
response_example << tresp
|
781
802
|
elsif tresp.is_a?(Hash)
|
@@ -797,9 +818,9 @@ class OpenApiImport
|
|
797
818
|
end
|
798
819
|
elsif v.key?(:schema) && v[:schema].is_a?(Hash) &&
|
799
820
|
(v[:schema].key?(:properties) ||
|
800
|
-
|
801
|
-
|
802
|
-
|
821
|
+
(v[:schema].key?(:items) && v[:schema][:items].key?(:properties)) ||
|
822
|
+
(v[:schema].key?(:items) && v[:schema][:items].key?(:allOf)) ||
|
823
|
+
v[:schema].key?(:allOf))
|
803
824
|
properties = {}
|
804
825
|
if v[:schema].key?(:properties)
|
805
826
|
properties = v[:schema][:properties]
|
@@ -817,7 +838,7 @@ class OpenApiImport
|
|
817
838
|
response_example << "["
|
818
839
|
end
|
819
840
|
|
820
|
-
response_example += get_examples(properties) unless properties.empty?
|
841
|
+
response_example += get_examples(properties, :key_value, remove_readonly) unless properties.empty?
|
821
842
|
|
822
843
|
unless response_example.empty?
|
823
844
|
if v[:schema].key?(:properties) || v[:schema].key?(:allOf)
|
@@ -837,7 +858,6 @@ class OpenApiImport
|
|
837
858
|
rs.gsub!(/@(\w+):/,'\'@\1\':')
|
838
859
|
end
|
839
860
|
end
|
840
|
-
|
841
861
|
return response_example
|
842
862
|
end
|
843
863
|
|
@@ -887,7 +907,6 @@ class OpenApiImport
|
|
887
907
|
# Get patterns
|
888
908
|
private def get_patterns(dpk, dpv)
|
889
909
|
data_pattern = []
|
890
|
-
|
891
910
|
if dpv.keys.include?(:pattern)
|
892
911
|
#todo: control better the cases with back slashes
|
893
912
|
if dpv[:pattern].include?('\\\\/')
|
@@ -932,6 +951,10 @@ class OpenApiImport
|
|
932
951
|
data_pattern += get_patterns("#{dpk}.#{dpkk}",dpvv)
|
933
952
|
end
|
934
953
|
end
|
954
|
+
elsif dpv[:type] == 'array' and dpv.key?(:items) and dpv[:items].is_a?(Hash) and
|
955
|
+
!dpv[:items].key?(:enum) and !dpv[:items].key?(:properties) and dpv[:items].key?(:type)
|
956
|
+
#{:title=>"labels", :description=>"Labels specified for the file system", :type=>"array", :items=>{:type=>"string", :enum=>["string"]}}
|
957
|
+
data_pattern << "'#{dpk}': [ #{get_patterns('', dpv[:items]).join[4..-1]} ]"
|
935
958
|
elsif dpv[:type] == 'object' and dpv.key?(:properties)
|
936
959
|
dpv[:properties].each do |dpkk,dpvv|
|
937
960
|
if dpk == ''
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: open_api_import
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.
|
4
|
+
version: 0.10.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mario Ruiz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oas_parser
|
@@ -16,60 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 0.22.2
|
19
|
+
version: '0.25'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '0.
|
30
|
-
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 0.22.2
|
26
|
+
version: '0.25'
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: rufo
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
36
30
|
requirements:
|
37
|
-
- - ">="
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: 0.11.0
|
40
31
|
- - "~>"
|
41
32
|
- !ruby/object:Gem::Version
|
42
|
-
version: '0.
|
33
|
+
version: '0.12'
|
43
34
|
type: :runtime
|
44
35
|
prerelease: false
|
45
36
|
version_requirements: !ruby/object:Gem::Requirement
|
46
37
|
requirements:
|
47
|
-
- - ">="
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: 0.11.0
|
50
38
|
- - "~>"
|
51
39
|
- !ruby/object:Gem::Version
|
52
|
-
version: '0.
|
40
|
+
version: '0.12'
|
53
41
|
- !ruby/object:Gem::Dependency
|
54
42
|
name: nice_hash
|
55
43
|
requirement: !ruby/object:Gem::Requirement
|
56
44
|
requirements:
|
57
45
|
- - "~>"
|
58
46
|
- !ruby/object:Gem::Version
|
59
|
-
version: '1.
|
60
|
-
- - ">="
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: 1.15.4
|
47
|
+
version: '1.16'
|
63
48
|
type: :runtime
|
64
49
|
prerelease: false
|
65
50
|
version_requirements: !ruby/object:Gem::Requirement
|
66
51
|
requirements:
|
67
52
|
- - "~>"
|
68
53
|
- !ruby/object:Gem::Version
|
69
|
-
version: '1.
|
70
|
-
- - ">="
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
version: 1.15.4
|
54
|
+
version: '1.16'
|
73
55
|
- !ruby/object:Gem::Dependency
|
74
56
|
name: rspec
|
75
57
|
requirement: !ruby/object:Gem::Requirement
|