lib/open_api/dsl.rb in zero-rails_openapi-1.4.0 vs lib/open_api/dsl.rb in zero-rails_openapi-1.4.1
- old
+ new
@@ -1,7 +1,7 @@
require 'open_api/dsl/api_info_obj'
-require 'open_api/dsl/ctrl_info_obj'
+require 'open_api/dsl/components'
module OpenApi
module DSL
def self.included(base)
base.extend ClassMethods
@@ -23,22 +23,21 @@
tag[:externalDocs] = { description: 'ref', url: external_doc_url } if external_doc_url.present?
end
def components &block
apis_tag if @_ctrl_infos.nil?
- current_ctrl = @_ctrl_infos[:components] = CtrlInfoObj.new
+ current_ctrl = @_ctrl_infos[:components] = Components.new
current_ctrl.instance_eval(&block)
current_ctrl._process_objs
end
- def api action, summary = '', http: nil, builder: nil, skip: [ ], use: [ ], &block
+ def api action, summary = '', http: nil, skip: [ ], use: [ ], &block
apis_tag if @_ctrl_infos.nil?
# select the routing info (corresponding to the current method) from routing list.
action_path = "#{@_ctrl_path ||= controller_path}##{action}"
routes_info = ctrl_routes_list&.select { |api| api[:action_path].match?(/^#{action_path}$/) }&.first
pp "[ZRO Warning] Routing mapping failed: #{@_ctrl_path}##{action}" and return if routes_info.nil?
- Generator.generate_builder_file(action_path, builder)
api = ApiInfoObj.new(action_path, skip: Array(skip), use: Array(use))
.merge! description: '', summary: summary, operationId: action, tags: [@_apis_tag],
parameters: [ ], requestBody: '', responses: { }, security: [ ], servers: [ ]
[action, :all].each { |blk_key| @_api_dry_blocks&.[](blk_key)&.each { |blk| api.instance_eval(&blk) } }
@@ -48,9 +47,10 @@
api.delete_if { |_, v| v.blank? }
path = (@_api_infos ||= { })[routes_info[:path]] ||= { }
http_verbs = (http || routes_info[:http_verb]).split('|')
http_verbs.each { |verb| path[verb] = api }
+ api
end
# method could be symbol array, like: %i[ .. ]
def api_dry action = :all, desc = '', &block
@_api_dry_blocks ||= { }