open_api_import 0.8.7 → 0.8.8

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/open_api_import.rb +58 -20
  3. metadata +23 -24
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7d123eef0845352c28e10274ebff8fc627462d591013e44099107d8523876cc0
4
- data.tar.gz: c62cd35822be64e9f8e388a202300c49423998baec1b9278c44d2836ff076579
3
+ metadata.gz: 5fa1a76a617230a0abfacaa9dac96af4eb552527b48101359073c94634a6ca83
4
+ data.tar.gz: f8c3f3bf50d9aeb17cd5910f6ab26fa52692420ae20af9f67a58536295787beb
5
5
  SHA512:
6
- metadata.gz: 3edbd39324abf7210720f119feeaff317c1f06561d501cb5e984abcce229f725529f1bca917028763e85b84f95bef45aae7945adecdd8af9e2c23e3e5f45523e
7
- data.tar.gz: 15aadb2413aa6fcadf746b8c302db2adf6332c5cda8dc1af413afcfb4f8ed09adb99f6fb134c1e71619663de1f734b8ba60850d3dc4b2981cebe98bbb37ed20e
6
+ metadata.gz: 1ca17b645ee10cecec6cbbba624a50128b6b1efaa8afc07fb553a5db55f01097ac78826d89369b27b3a0a0ecd51486c7562d04ecfefaa47abf46efc50506db8b
7
+ data.tar.gz: 91ad90bf66880330429278a558c9a9a72caf33de24533e475b36a1aa4b78b50024282f71edbdf0f3c538a6096dbaaf282567f8a65b7f4541a9eb43c8d6890b15
@@ -127,6 +127,7 @@ class OpenApiImport
127
127
  params_query = []
128
128
  params_required = []
129
129
  description_parameters = []
130
+ data_form = []
130
131
  data_required = []
131
132
  data_read_only = []
132
133
  data_default = []
@@ -135,7 +136,7 @@ class OpenApiImport
135
136
  responses = []
136
137
 
137
138
  # for the case operationId is missing
138
- cont[:operationId] = "unknown" unless cont.key?(:operationId)
139
+ cont[:operationId] = "undefined" unless cont.key?(:operationId)
139
140
  if create_method_name == :path
140
141
  method_name = (met.to_s + "_" + path.path.to_s).snake_case
141
142
  method_name.chop! if method_name[-1] == "_"
@@ -219,7 +220,8 @@ class OpenApiImport
219
220
  response_example = []
220
221
  response_example = get_response_examples(v)
221
222
 
222
- data_pattern += get_patterns(k, v[:schema]) if v.key?(:schema)
223
+ data_pattern += get_patterns('', v[:schema]) if v.key?(:schema)
224
+ data_pattern.uniq!
223
225
  v[:description] = v[:description].to_s.gsub("'", %q(\\\'))
224
226
 
225
227
  if !response_example.empty?
@@ -277,8 +279,26 @@ class OpenApiImport
277
279
  params_query << p[:name]
278
280
  params_required << p[:name] if p[:required].to_s=="true"
279
281
  description_parameters << "# #{p[:name]}: (#{type}) #{"(required)" if p[:required].to_s=="true"} #{p[:description]}"
282
+ elsif p[:in] == "formData" or p[:in] == "formdata"
283
+ #todo: take in consideration: default, required
284
+ #todo: see if we should add the required as params to the method and not required as options
285
+ #todo: set on data the required fields with the values from args
286
+
287
+ description_parameters << "# #{p[:name]}: (#{p[:type]}) #{p[:description]}"
288
+ case p[:type]
289
+ when /^string$/i
290
+ data_form << "#{p[:name]}: ''"
291
+ when /^boolean$/i
292
+ data_form << "#{p[:name]}: true"
293
+ when /^number$/i
294
+ data_form << "#{p[:name]}: 0"
295
+ when /^integer$/i
296
+ data_form << "#{p[:name]}: 0"
297
+ else
298
+ puts "! on formData not supported type #{p[:type]}"
299
+ end
300
+
280
301
  elsif p[:in] == "body"
281
-
282
302
  if p.keys.include?(:schema)
283
303
  if p[:schema].key?(:oneOf)
284
304
  bodies = p[:schema][:oneOf]
@@ -327,6 +347,7 @@ class OpenApiImport
327
347
  end
328
348
 
329
349
  data_pattern += get_patterns(dpk,dpv)
350
+ data_pattern.uniq!
330
351
 
331
352
  if dpv.keys.include?(:readOnly) and dpv[:readOnly] == true
332
353
  data_read_only << dpk
@@ -360,6 +381,10 @@ class OpenApiImport
360
381
  end
361
382
  end
362
383
  end
384
+ elsif p[:in]=="header"
385
+ #todo: see how we can treat those cases
386
+ else
387
+ puts "! not imported data with :in:#{p[:in]} => #{p.inspect}"
363
388
  end
364
389
  end
365
390
 
@@ -441,6 +466,10 @@ class OpenApiImport
441
466
  output << "},"
442
467
  end
443
468
 
469
+ unless data_form.empty?
470
+ data_examples << data_form
471
+ end
472
+
444
473
  unless data_examples.empty?
445
474
  unless data_required.empty?
446
475
  reqdata = []
@@ -808,47 +837,56 @@ class OpenApiImport
808
837
  #todo: control better the cases with back slashes
809
838
  if dpv[:pattern].include?('\\\\/')
810
839
  #for cases like this: ^[^\.\\/:*?"<>|][^\\/:*?"<>|]{0,13}[^\.\\/:*?"<>|]?$
811
- data_pattern << "#{dpk}: /#{dpv[:pattern].to_s.gsub('\/','/')}/"
840
+ data_pattern << "'#{dpk}': /#{dpv[:pattern].to_s.gsub('\/','/')}/"
812
841
  else
813
- data_pattern << "#{dpk}: /#{dpv[:pattern].to_s}/"
842
+ data_pattern << "'#{dpk}': /#{dpv[:pattern].to_s}/"
814
843
  end
815
844
  elsif dpv.key?(:minLength) and dpv.key?(:maxLength)
816
- data_pattern << "#{dpk}: :'#{dpv[:minLength]}-#{dpv[:maxLength]}:LN$'"
845
+ data_pattern << "'#{dpk}': :'#{dpv[:minLength]}-#{dpv[:maxLength]}:LN$'"
817
846
  elsif dpv.key?(:minLength) and !dpv.key?(:maxLength)
818
- data_pattern << "#{dpk}: :'#{dpv[:minLength]}:LN$'"
847
+ data_pattern << "'#{dpk}': :'#{dpv[:minLength]}:LN$'"
819
848
  elsif !dpv.key?(:minLength) and dpv.key?(:maxLength)
820
- data_pattern << "#{dpk}: :'0-#{dpv[:maxLength]}:LN$'"
849
+ data_pattern << "'#{dpk}': :'0-#{dpv[:maxLength]}:LN$'"
821
850
  elsif dpv.key?(:minimum) and dpv.key?(:maximum) and dpv[:type]=='string'
822
- data_pattern << "#{dpk}: :'#{dpv[:minimum]}-#{dpv[:maximum]}:LN$'"
851
+ data_pattern << "'#{dpk}': :'#{dpv[:minimum]}-#{dpv[:maximum]}:LN$'"
823
852
  elsif dpv.key?(:minimum) and dpv.key?(:maximum)
824
- data_pattern << "#{dpk}: #{dpv[:minimum]}..#{dpv[:maximum]}"
853
+ data_pattern << "'#{dpk}': #{dpv[:minimum]}..#{dpv[:maximum]}"
825
854
  elsif dpv.key?(:minimum) and !dpv.key?(:maximum)
826
855
  if RUBY_VERSION >= '2.6.0'
827
- data_pattern << "#{dpk}: #{dpv[:minimum]}.."
856
+ data_pattern << "'#{dpk}': #{dpv[:minimum]}.."
828
857
  else
829
- data_pattern << "##{dpk}: #{dpv[:minimum]}.. # INFINITE only working on ruby>=2.6.0"
858
+ data_pattern << "#'#{dpk}': #{dpv[:minimum]}.. # INFINITE only working on ruby>=2.6.0"
830
859
  end
831
860
  elsif !dpv.key?(:minimum) and dpv.key?(:maximum)
832
- data_pattern << "#{dpk}: 0..#{dpv[:maximum]}"
833
- elsif dpv.key?(:enum)
834
- data_pattern << "#{dpk}: :'#{dpv[:enum].join('|')}'"
861
+ data_pattern << "'#{dpk}': 0..#{dpv[:maximum]}"
835
862
  elsif dpv[:format] == 'date-time'
836
- data_pattern << "#{dpk}: DateTime"
863
+ data_pattern << "'#{dpk}': DateTime"
837
864
  elsif dpv[:type] == 'boolean'
838
- data_pattern << "#{dpk}: Boolean"
865
+ data_pattern << "'#{dpk}': Boolean"
866
+ elsif dpv.key?(:enum)
867
+ data_pattern << "'#{dpk}': :'#{dpv[:enum].join('|')}'"
839
868
  elsif dpv[:type] == 'array' and dpv.key?(:items) and dpv[:items].is_a?(Hash) and dpv[:items].key?(:enum) and dpv[:items][:enum].is_a?(Array)
840
869
  #{:title=>"Balala", :type=>"array", :items=>{:type=>"string", :enum=>["uno","dos"], :example=>"uno"}}
841
- data_pattern << "#{dpk}: [:'#{dpv[:items][:enum].join('|')}']"
870
+ data_pattern << "'#{dpk}': [:'#{dpv[:items][:enum].join('|')}']"
842
871
  elsif dpv[:type] == 'array' and dpv.key?(:items) and dpv[:items].is_a?(Hash) and !dpv[:items].key?(:enum) and dpv[:items].key?(:properties)
843
872
  #{:title=>"Balala", :type=>"array", :items=>{title: 'xxxx, properties: {server: {enum:['ibm','msa','pytan']}}}
844
873
  dpv[:items][:properties].each do |dpkk,dpvv|
845
- data_pattern += get_patterns(dpkk,dpvv)
874
+ if dpk == ''
875
+ data_pattern += get_patterns("#{dpkk}",dpvv)
876
+ else
877
+ data_pattern += get_patterns("#{dpk}.#{dpkk}",dpvv)
878
+ end
846
879
  end
847
880
  elsif dpv[:type] == 'object' and dpv.key?(:properties)
848
881
  dpv[:properties].each do |dpkk,dpvv|
849
- data_pattern += get_patterns(dpkk,dpvv)
882
+ if dpk == ''
883
+ data_pattern += get_patterns("#{dpkk}",dpvv)
884
+ else
885
+ data_pattern += get_patterns("#{dpk}.#{dpkk}",dpvv)
886
+ end
850
887
  end
851
888
  end
889
+ data_pattern.uniq!
852
890
  return data_pattern
853
891
 
854
892
  end
metadata CHANGED
@@ -1,35 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: open_api_import
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.7
4
+ version: 0.8.8
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-08-20 00:00:00.000000000 Z
11
+ date: 2019-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oas_parser
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '0.16'
20
17
  - - ">="
21
18
  - !ruby/object:Gem::Version
22
19
  version: 0.16.0
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: '0.16'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '0.16'
30
27
  - - ">="
31
28
  - !ruby/object:Gem::Version
32
29
  version: 0.16.0
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '0.16'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rufo
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -54,42 +54,42 @@ dependencies:
54
54
  name: nice_hash
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
- - - "~>"
58
- - !ruby/object:Gem::Version
59
- version: '1.13'
60
57
  - - ">="
61
58
  - !ruby/object:Gem::Version
62
- version: 1.13.0
59
+ version: 1.14.0
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '1.14'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - "~>"
68
- - !ruby/object:Gem::Version
69
- version: '1.13'
70
67
  - - ">="
71
68
  - !ruby/object:Gem::Version
72
- version: 1.13.0
69
+ version: 1.14.0
70
+ - - "~>"
71
+ - !ruby/object:Gem::Version
72
+ version: '1.14'
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: rspec
75
75
  requirement: !ruby/object:Gem::Requirement
76
76
  requirements:
77
- - - "~>"
78
- - !ruby/object:Gem::Version
79
- version: '3.8'
80
77
  - - ">="
81
78
  - !ruby/object:Gem::Version
82
79
  version: 3.8.0
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.8'
83
83
  type: :development
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '3.8'
90
87
  - - ">="
91
88
  - !ruby/object:Gem::Version
92
89
  version: 3.8.0
90
+ - - "~>"
91
+ - !ruby/object:Gem::Version
92
+ version: '3.8'
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: coveralls
95
95
  requirement: !ruby/object:Gem::Requirement
@@ -146,8 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
146
  - !ruby/object:Gem::Version
147
147
  version: '0'
148
148
  requirements: []
149
- rubyforge_project:
150
- rubygems_version: 2.7.6
149
+ rubygems_version: 3.0.3
151
150
  signing_key:
152
151
  specification_version: 4
153
152
  summary: OpenApiImport -- Import a Swagger or Open API file and create a Ruby Request