open_api_import 0.9.2 → 0.10.0
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/README.md +11 -0
- data/bin/open_api_import +4 -0
- data/lib/open_api_import.rb +50 -13
- metadata +19 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34a7117aedab4cd987fe9af035ebb047c04439068aba13fdea8431fc872354f4
|
4
|
+
data.tar.gz: 3e6517fb5517a848b757e7105306d82a4a5e624771a3a9bfe5835266d42aa336
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c9c355b6f63e6e9b877aea3e58cc3f48d6c6f472fa7e09bd1d3c4044d8bbb4a0275e8d52044f1d8532a8fe7330651709cdb9ad31e89292b2c5e897c41512211d
|
7
|
+
data.tar.gz: dfed0eccfe012f5eeaf728f01cacb933c5352368e8811116d7b2d881d781eb3a61fea9035c5354a23cc466b2a299322d30e2dacbd07ef54e7d227173988799f4
|
data/README.md
CHANGED
@@ -12,6 +12,8 @@ The output of this gem will be following the specification of Request Hashes: ht
|
|
12
12
|
|
13
13
|
The Request Hashes generated will be able to be used with any Ruby Http Client and it is adapted even better with nice_http gem: https://github.com/MarioRuiz/nice_http
|
14
14
|
|
15
|
+
A beautiful way to access and use the generated files is by using *pry*: https://github.com/pry/pry
|
16
|
+
|
15
17
|
To be able to generate random requests take a look at the documentation for nice_hash gem: https://github.com/MarioRuiz/nice_hash
|
16
18
|
|
17
19
|
This is an example of a generated request hash:
|
@@ -108,6 +110,7 @@ In case no options supplied:
|
|
108
110
|
-T, --tags_module It will be used the tags key to create the module name
|
109
111
|
-F, --fixed_module all the requests will be under the module Requests
|
110
112
|
-s, --silent It will display only errors
|
113
|
+
-c, --create_constants For required arguments, it will create keyword arguments assigning by default a constant.
|
111
114
|
```
|
112
115
|
|
113
116
|
|
@@ -487,6 +490,14 @@ It will include this on the output file:
|
|
487
490
|
...
|
488
491
|
```
|
489
492
|
|
493
|
+
### create_constants
|
494
|
+
|
495
|
+
The methods will be generated using keyword arguments and for required arguments, it will create keyword arguments assigning by default a constant.
|
496
|
+
|
497
|
+
```ruby
|
498
|
+
def self.get_products(latitude: LATITUDE, longitude: LONGITUDE)
|
499
|
+
```
|
500
|
+
|
490
501
|
## Contributing
|
491
502
|
|
492
503
|
Bug reports and pull requests are welcome on GitHub at https://github.com/marioruiz/open_api_import.
|
data/bin/open_api_import
CHANGED
@@ -46,6 +46,10 @@ optparse = OptionParser.new do |opts|
|
|
46
46
|
options[:silent] = true
|
47
47
|
end
|
48
48
|
|
49
|
+
opts.on("-c", "--create_constants", "For required arguments, it will create keyword arguments assigning by default a constant.") do
|
50
|
+
options[:create_constants] = true
|
51
|
+
end
|
52
|
+
|
49
53
|
|
50
54
|
end
|
51
55
|
|
data/lib/open_api_import.rb
CHANGED
@@ -18,6 +18,7 @@ class OpenApiImport
|
|
18
18
|
# operation_id: it will be used the operationId field but using the snake_case version, for example for listUsers: list_users
|
19
19
|
# operationId: it will be used the operationId field like it is, for example: listUsers
|
20
20
|
# @param name_for_module [Symbol]. (:path, :path_file, :fixed, :tags, :tags_file) (default: :path). How the module names will be created.
|
21
|
+
# @param create_constants [Boolean]. (default: false) For required arguments, it will create keyword arguments assigning by default a constant.
|
21
22
|
# @param silent [Boolean]. (default: false) It will display only errors.
|
22
23
|
# path: It will be used the first folder of the path to create the module name, for example the path /users/list will be in the module Users and all the requests from all modules in the same file.
|
23
24
|
# path_file: It will be used the first folder of the path to create the module name, for example the path /users/list will be in the module Users and each module will be in a new requests file.
|
@@ -25,7 +26,7 @@ class OpenApiImport
|
|
25
26
|
# tags_file: It will be used the tags key to create the module name, for example the tags: [users,list] will create the module UsersList and and each module will be in a new requests file.
|
26
27
|
# fixed: all the requests will be under the module Requests
|
27
28
|
##############################################################################################
|
28
|
-
def self.from(swagger_file, create_method_name: :operation_id, include_responses: true, mock_response: false, name_for_module: :path, silent: false)
|
29
|
+
def self.from(swagger_file, create_method_name: :operation_id, include_responses: true, mock_response: false, name_for_module: :path, silent: false, create_constants: false)
|
29
30
|
begin
|
30
31
|
f = File.new("#{swagger_file}_open_api_import.log", "w")
|
31
32
|
f.sync = true
|
@@ -53,6 +54,7 @@ class OpenApiImport
|
|
53
54
|
file_errors = file_to_convert + ".errors.log"
|
54
55
|
File.delete(file_errors) if File.exist?(file_errors)
|
55
56
|
import_errors = ""
|
57
|
+
required_constants = []
|
56
58
|
|
57
59
|
begin
|
58
60
|
definition = OasParser::Definition.resolve(swagger_file)
|
@@ -278,7 +280,12 @@ class OpenApiImport
|
|
278
280
|
path_txt.gsub!("{#{p[:name]}}", "\#{#{param_name}}")
|
279
281
|
end
|
280
282
|
unless params_path.include?(param_name)
|
281
|
-
|
283
|
+
if create_constants
|
284
|
+
params_path << "#{param_name}: #{param_name.upcase}"
|
285
|
+
required_constants << param_name.upcase
|
286
|
+
else
|
287
|
+
params_path << param_name
|
288
|
+
end
|
282
289
|
#params_required << param_name if p[:required].to_s=="true"
|
283
290
|
description_parameters << "# #{p[:name]}: (#{type}) #{"(required)" if p[:required].to_s=="true"} #{p[:description]}"
|
284
291
|
end
|
@@ -400,13 +407,27 @@ class OpenApiImport
|
|
400
407
|
unless params_query.empty?
|
401
408
|
path_txt += "?"
|
402
409
|
params_required.each do |pr|
|
403
|
-
if
|
404
|
-
if
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
+
if create_constants
|
411
|
+
if params_query.include?(pr)
|
412
|
+
if create_method_name == :operationId
|
413
|
+
path_txt += "#{pr}=\#{#{pr}}&"
|
414
|
+
params << "#{pr}: #{pr.upcase}"
|
415
|
+
required_constants << pr.upcase
|
416
|
+
else
|
417
|
+
path_txt += "#{pr}=\#{#{pr.to_s.snake_case}}&"
|
418
|
+
params << "#{pr.to_s.snake_case}: #{pr.to_s.snake_case.upcase}"
|
419
|
+
required_constants << pr.to_s.snake_case.upcase
|
420
|
+
end
|
421
|
+
end
|
422
|
+
else
|
423
|
+
if params_query.include?(pr)
|
424
|
+
if create_method_name == :operationId
|
425
|
+
path_txt += "#{pr}=\#{#{pr}}&"
|
426
|
+
params << "#{pr}"
|
427
|
+
else
|
428
|
+
path_txt += "#{pr}=\#{#{pr.to_s.snake_case}}&"
|
429
|
+
params << "#{pr.to_s.snake_case}"
|
430
|
+
end
|
410
431
|
end
|
411
432
|
end
|
412
433
|
end
|
@@ -435,7 +456,12 @@ class OpenApiImport
|
|
435
456
|
paramst = []
|
436
457
|
prms = path_txt.scan(/[^#]{(\w+)}/)
|
437
458
|
prms.each do |p|
|
438
|
-
|
459
|
+
#if create_constants
|
460
|
+
# paramst<<"#{p[0].to_s.snake_case}: #{p[0].to_s.snake_case.upcase}"
|
461
|
+
# required_constants << p[0].to_s.snake_case.upcase
|
462
|
+
#else
|
463
|
+
paramst<<p[0].to_s.snake_case
|
464
|
+
#end
|
439
465
|
path_txt.gsub!("{#{p[0]}}", "\#{#{p[0].to_s.snake_case}}")
|
440
466
|
end
|
441
467
|
paramst.concat params
|
@@ -547,7 +573,6 @@ class OpenApiImport
|
|
547
573
|
end
|
548
574
|
end
|
549
575
|
end
|
550
|
-
|
551
576
|
output_footer = []
|
552
577
|
|
553
578
|
output_footer << "end" unless (module_requests == "") && ([:path, :path_file, :tags, :tags_file].include?(name_for_module))
|
@@ -589,7 +614,18 @@ class OpenApiImport
|
|
589
614
|
end
|
590
615
|
|
591
616
|
requests_file_path = file_to_convert + ".rb"
|
592
|
-
|
617
|
+
if required_constants.size > 0
|
618
|
+
rconsts = "# Required constants\n"
|
619
|
+
required_constants.uniq!
|
620
|
+
required_constants.each do |rq|
|
621
|
+
rconsts += "#{rq} ||= ENV['#{rq}'] ||=''\n"
|
622
|
+
end
|
623
|
+
rconsts += "\n\n"
|
624
|
+
else
|
625
|
+
rconsts = ''
|
626
|
+
end
|
627
|
+
|
628
|
+
File.open(requests_file_path, "w") { |file| file.write(rconsts + requires_txt) }
|
593
629
|
res_rufo = `rufo #{requests_file_path}`
|
594
630
|
message = "** File that contains all the requires for all Request files: \n"
|
595
631
|
message += " - #{requests_file_path} "
|
@@ -801,6 +837,7 @@ class OpenApiImport
|
|
801
837
|
rs.gsub!(/@(\w+):/,'\'@\1\':')
|
802
838
|
end
|
803
839
|
end
|
840
|
+
|
804
841
|
return response_example
|
805
842
|
end
|
806
843
|
|
@@ -871,7 +908,7 @@ class OpenApiImport
|
|
871
908
|
data_pattern << "'#{dpk}': #{dpv[:minimum]}..#{dpv[:maximum]}"
|
872
909
|
elsif dpv.key?(:minimum) and !dpv.key?(:maximum)
|
873
910
|
if RUBY_VERSION >= '2.6.0'
|
874
|
-
data_pattern << "
|
911
|
+
data_pattern << "'#{dpk}': #{dpv[:minimum]}.. "
|
875
912
|
else
|
876
913
|
data_pattern << "#'#{dpk}': #{dpv[:minimum]}.. # INFINITE only working on ruby>=2.6.0"
|
877
914
|
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.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mario Ruiz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-03-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oas_parser
|
@@ -34,22 +34,22 @@ dependencies:
|
|
34
34
|
name: rufo
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - "~>"
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: '0.7'
|
40
37
|
- - ">="
|
41
38
|
- !ruby/object:Gem::Version
|
42
|
-
version: 0.
|
39
|
+
version: 0.11.0
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0.11'
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- - "~>"
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '0.7'
|
50
47
|
- - ">="
|
51
48
|
- !ruby/object:Gem::Version
|
52
|
-
version: 0.
|
49
|
+
version: 0.11.0
|
50
|
+
- - "~>"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '0.11'
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: nice_hash
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -59,7 +59,7 @@ dependencies:
|
|
59
59
|
version: '1.15'
|
60
60
|
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: 1.15.
|
62
|
+
version: 1.15.4
|
63
63
|
type: :runtime
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -69,27 +69,27 @@ dependencies:
|
|
69
69
|
version: '1.15'
|
70
70
|
- - ">="
|
71
71
|
- !ruby/object:Gem::Version
|
72
|
-
version: 1.15.
|
72
|
+
version: 1.15.4
|
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
|
-
|
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
|