lib/open_api/dsl.rb in zero-rails_openapi-1.1.1 vs lib/open_api/dsl.rb in zero-rails_openapi-1.2.0
- old
+ new
@@ -27,27 +27,32 @@
def open_api method, summary = '', &block
apis_set if @_ctrl_infos.nil?
# select the routing info (corresponding to the current method) from the routing list.
action_path = "#{@_ctrl_path ||= controller_path}##{method}"
- routes_info = ctrl_routes_list.select { |api| api[:action_path].match? /^#{action_path}$/ }.first
+ routes_info = ctrl_routes_list&.select { |api| api[:action_path].match? /^#{action_path}$/ }&.first
puts "[zero-rails_openapi] Routing mapping failed: #{@_ctrl_path}##{method}" or return if routes_info.nil?
# structural { path: { http_method:{ } } }, for Paths Object.
path = (@_api_infos ||= { })[routes_info[:path]] ||= { }
current_api = path[routes_info[:http_verb]] =
- ApiInfoObj.new(action_path).merge! summary: summary, operationId: method, tags: [@_apis_tag]
+ ApiInfoObj.new(action_path)
+ .merge! description: '', summary: summary, operationId: method, tags: [@_apis_tag],
+ parameters: [ ], requestBody: '', responses: { },
+ security: [ ], servers: [ ]
current_api.tap do |it|
- it.instance_eval &block if block_given?
[method, :all].each do |key| # blocks_store_key
@_apis_blocks&.[](key)&.each { |blk| it.instance_eval &blk }
end
+ it.instance_eval &block if block_given?
+ it.instance_eval { process_params }
+ it.delete_if { |_, v| v.blank? }
end
end
# For DRY; method could be symbol array
- def open_api_set method = :all, desc = '', &block
+ def api_dry method = :all, desc = '', &block
@_apis_blocks ||= { }
if method.is_a? Array
method.each { |m| (@_apis_blocks[m.to_sym] ||= [ ]) << block }
else
(@_apis_blocks[method.to_sym] ||= [ ]) << block