open_api_import 0.8.7 → 0.8.8

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 +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