open_api_import 0.7.2 → 0.7.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/open_api_import.rb +66 -12
  3. metadata +6 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d0d8fda18486db9232fa9bc04e944b73da1e6aacdce15c0c7f3da3a7dd49b874
4
- data.tar.gz: 532c30e33b6f9d32e3e432366bf870f7e15df6c455bff3112a59bdbbbef50efa
3
+ metadata.gz: 671766612734c0e73f75720d08549843c3ebe59545bea07c8c011bcb8301e114
4
+ data.tar.gz: 1d33903fce9f4a859c69eb1f11f77372943d7367762b1d59480af434f14ed2aa
5
5
  SHA512:
6
- metadata.gz: 6108beecdf144608c0714e84a0fcd58d849b734c694d8047d9886332b4499888719abd17fe3d72db9a6428f4542b33a8c56db82ab66a3f09291fd0eb50659a66
7
- data.tar.gz: aa9593f00472d40f9e2faa88004289173258a61cca8d197ea99afb1d21d38440ab7ff7015ace1028a8c56d8ee1a9cad0c4a225052c0b23bd3de7571d84f1c2e6
6
+ metadata.gz: cbc17d0852b4fa8140bc642f02ef6636aaa3910349783b8ad08235f6f56ab47bb2b40bd4c87d66e9004917b7d8963d44a03e8c966bc6a53ea61db0ea5ea3c752
7
+ data.tar.gz: 162ffc86f272c1d94a7e14e68ca61cf18cb93c0a3e71e621bdd0dfb3463c144ec11d757c5fe6613a184247cd066b49ad848e7714b89ae5bccf917559add77197
@@ -294,8 +294,8 @@ class OpenApiImport
294
294
 
295
295
  bodies.each do |body|
296
296
  if body.keys.include?(:required) and body[:required].size > 0
297
- output << "# required data: #{body[:required].join(", ")}"
298
- data_required += body[:required]
297
+ data_required += get_required_data(body)
298
+ output << "# required data: #{data_required.inspect}"
299
299
  end
300
300
 
301
301
  if body.keys.include?(:properties) and body[:properties].size > 0
@@ -420,7 +420,7 @@ class OpenApiImport
420
420
 
421
421
  unless data_required.empty?
422
422
  output << "data_required: ["
423
- output << ":#{data_required.uniq.join(", :")}"
423
+ output << ":#{data_required.uniq.join(", :")}".gsub(':{','{')
424
424
  output << "],"
425
425
  end
426
426
  unless data_read_only.empty?
@@ -443,17 +443,16 @@ class OpenApiImport
443
443
  unless data_examples.empty?
444
444
  unless data_required.empty?
445
445
  reqdata = []
446
- data_examples[0].each do |edata|
447
- data_required.each do |rdata|
448
- if edata.scan(/^#{rdata}:/).size>0 or edata.scan(/:/).size==0
449
- reqdata << edata
450
- end
446
+ begin
447
+ data_ex = eval("{#{data_examples[0].join(", ")}}")
448
+ rescue
449
+ data_ex = {}
451
450
  end
452
- end
451
+ reqdata = filter(data_ex, data_required)
453
452
  unless reqdata.empty?
454
- output << "data: {"
455
- output << reqdata.join(", \n")
456
- output << "},"
453
+ phsd = pretty_hash_symbolized(reqdata)
454
+ phsd[0]="data: {"
455
+ output += phsd
457
456
  end
458
457
  end
459
458
  unless data_read_only.empty? or !data_required.empty?
@@ -769,5 +768,60 @@ class OpenApiImport
769
768
  end
770
769
  return data_examples_all_of, bodies
771
770
  end
771
+
772
+ # Get required data
773
+ private def get_required_data(body)
774
+ data_required = []
775
+ if body.keys.include?(:required) and body[:required].size > 0
776
+ body[:required].each do |r|
777
+ data_required << r.to_sym
778
+ end
779
+ end
780
+ data_required.each do |key|
781
+ if body.key?(:properties) and body[:properties][key].is_a?(Hash) and
782
+ body[:properties][key].key?(:required) and body[:properties][key][:required].size>0
783
+ dr = get_required_data(body[:properties][key])
784
+ dr.each do |k|
785
+ data_required.push({key => k})
786
+ end
787
+ end
788
+ end
789
+ return data_required
790
+ end
791
+
792
+ #filter hash
793
+ private def filter(hash, keys)
794
+ result = {}
795
+ keys = [keys] unless keys.is_a?(Array)
796
+ keys.each do |k|
797
+ if k.is_a?(Symbol) and hash.key?(k)
798
+ if hash[k].is_a?(Hash)
799
+ result[k] = {}
800
+ else
801
+ result[k] = hash[k]
802
+ end
803
+ elsif k.is_a?(Hash) and hash.key?(k.keys[0])
804
+ result[k.keys[0]][k.values[0]] = filter(hash[k.keys[0]], k.values[0]).values[0]
805
+ end
806
+ end
807
+ return result
808
+ end
809
+
810
+ #gen pretty hash symbolized
811
+ private def pretty_hash_symbolized(hash)
812
+ output = []
813
+ output << "{"
814
+ hash.each do |kr,kv|
815
+ if kv.kind_of?(Hash)
816
+ restv = pretty_hash_symbolized(kv)
817
+ restv[0] = "#{kr}: {"
818
+ output += restv
819
+ else
820
+ output << "#{kr}: #{kv.inspect}, "
821
+ end
822
+ end
823
+ output << "},"
824
+ return output
825
+ end
772
826
  end
773
827
  end
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.7.2
4
+ version: 0.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mario Ruiz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-21 00:00:00.000000000 Z
11
+ date: 2019-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oas_parser
@@ -56,20 +56,20 @@ dependencies:
56
56
  requirements:
57
57
  - - "~>"
58
58
  - !ruby/object:Gem::Version
59
- version: '1.11'
59
+ version: '1.12'
60
60
  - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: 1.11.0
62
+ version: 1.12.4
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '1.11'
69
+ version: '1.12'
70
70
  - - ">="
71
71
  - !ruby/object:Gem::Version
72
- version: 1.11.0
72
+ version: 1.12.4
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: rspec
75
75
  requirement: !ruby/object:Gem::Requirement