zero-rails_openapi 1.3.2 → 1.3.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -21,6 +21,7 @@ module OpenApi
21
21
  def generate_doc(api_name)
22
22
  settings = Config.docs[api_name]
23
23
  doc = { openapi: '3.0.0' }.merge(settings.slice :info, :servers).merge(
24
+ # TODO: rename to just `security`
24
25
  security: settings[:global_security], tags: [ ], paths: { },
25
26
  components: {
26
27
  securitySchemes: settings[:global_security_schemes],
@@ -34,6 +35,7 @@ module OpenApi
34
35
  doc[:paths].merge! ctrl.instance_variable_get('@_api_infos') || { }
35
36
  doc[:tags] << ctrl_infos[:tag]
36
37
  doc[:components].merge! ctrl_infos[:components] || { }
38
+ ($api_paths_index ||= { })[ctrl.instance_variable_get('@_ctrl_path')] = api_name
37
39
  end
38
40
  doc[:components].delete_if { |_, v| v.blank? }
39
41
  doc[:tags] = doc[:tags].sort { |a, b| a[:name] <=> b[:name] }
@@ -67,19 +69,20 @@ module OpenApi
67
69
  FileUtils.mkdir_p dir_path
68
70
  file_path = "#{dir_path}/#{action}.json.jbuilder"
69
71
 
70
- unless !Config.overwrite_jbuilder_file && File::exists?(file_path)
72
+ if Config.overwrite_jbuilder_file || !File.exists?(file_path)
71
73
  File.open(file_path, 'w') { |file| file.write Config.jbuilder_templates[builder] }
72
74
  puts "[ZRO] JBuilder file has been generated: #{path}/#{action}"
73
75
  end
74
76
  end
75
77
 
76
- def self.generate_routes_list
78
+ def self.routes_list
77
79
  # ref https://github.com/rails/rails/blob/master/railties/lib/rails/tasks/routes.rake
78
80
  require './config/routes'
79
81
  all_routes = Rails.application.routes.routes
80
82
  require 'action_dispatch/routing/inspector'
81
83
  inspector = ActionDispatch::Routing::RoutesInspector.new(all_routes)
82
84
 
85
+ @routes_list ||=
83
86
  inspector.format(ActionDispatch::Routing::ConsoleFormatter.new, nil).split("\n").drop(1).map do |line|
84
87
  infos = line.match(/[A-Z].*/).to_s.split(' ') # => [GET, /api/v1/examples/:id, api/v1/examples#index]
85
88
  {
@@ -92,11 +95,19 @@ module OpenApi
92
95
  end.compact.group_by {|api| api[:action_path].split('#').first } # => { "api/v1/examples" => [..] }, group by paths
93
96
  end
94
97
 
95
- def self.get_actions_by_ctrl_path(path)
96
- @routes_list ||= generate_routes_list
97
- @routes_list[path]&.map do |action_info|
98
+ def self.get_actions_by_ctrl_path(ctrl_path)
99
+ routes_list[ctrl_path]&.map do |action_info|
98
100
  action_info[:action_path].split('#').last
99
101
  end
100
102
  end
103
+
104
+ def self.find_path_httpverb_by(ctrl_path, action)
105
+ routes_list[ctrl_path]&.map do |action_info|
106
+ if action_info[:action_path].split('#').last == action.to_s
107
+ return [ action_info[:path], action_info[:http_verb] ]
108
+ end
109
+ end
110
+ nil
111
+ end
101
112
  end
102
113
  end
@@ -1,3 +1,3 @@
1
1
  module OpenApi
2
- VERSION = '1.3.2'
2
+ VERSION = '1.3.3'
3
3
  end
@@ -16,15 +16,6 @@ Gem::Specification.new do |spec|
16
16
  spec.homepage = "https://github.com/zhandao/zero-rails_openapi"
17
17
  spec.license = "MIT"
18
18
 
19
- # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
20
- # to allow pushing to a single host or delete this section to allow pushing to any host.
21
- # if spec.respond_to?(:metadata)
22
- # spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
23
- # else
24
- # raise "RubyGems 2.0 or newer is required to protect against " \
25
- # "public gem pushes."
26
- # end
27
-
28
19
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
29
20
  f.match(%r{^(test|spec|features)/})
30
21
  end
@@ -35,4 +26,7 @@ Gem::Specification.new do |spec|
35
26
  spec.add_development_dependency "bundler", "~> 1.16.a"
36
27
  spec.add_development_dependency "rake", "~> 10.0"
37
28
  spec.add_development_dependency "rspec", "~> 3.0"
29
+
30
+ spec.add_runtime_dependency "rails", ">= 3"
31
+ spec.add_runtime_dependency "activesupport", ">= 3"
38
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zero-rails_openapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - zhandao
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-10 00:00:00.000000000 Z
11
+ date: 2017-11-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '3'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: activesupport
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '3'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '3'
55
83
  description: |-
56
84
  Provide concise DSL for generating the OpenAPI Specification 3 (OAS3)
57
85
  documentation JSON file for Rails application,
@@ -76,10 +104,10 @@ files:
76
104
  - bin/setup
77
105
  - documentation/examples/auto_gen_desc.rb
78
106
  - documentation/examples/auto_gen_doc.rb
79
- - documentation/examples/example_output_doc.json
80
107
  - documentation/examples/examples_controller.rb
81
108
  - documentation/examples/goods_doc.rb
82
109
  - documentation/examples/open_api.rb
110
+ - documentation/examples/output_example.json
83
111
  - documentation/parameter.md
84
112
  - lib/oas_objs/example_obj.rb
85
113
  - lib/oas_objs/helpers.rb