mirror of
https://github.com/ditkrg/rswag.git
synced 2026-01-25 15:22:56 +00:00
add upgrade parameters refs to openapi3
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
require 'active_support/core_ext/hash/slice'
|
||||
require 'active_support/core_ext/hash/conversions'
|
||||
require 'json'
|
||||
require 'byebug'
|
||||
|
||||
module Rswag
|
||||
module Specs
|
||||
@@ -54,12 +55,39 @@ module Rswag
|
||||
end
|
||||
|
||||
def resolve_parameter(ref, swagger_doc)
|
||||
key = ref.sub('#/parameters/', '').to_sym
|
||||
definitions = swagger_doc[:parameters]
|
||||
key = key_version(ref, swagger_doc)
|
||||
definitions = definition_version(swagger_doc)
|
||||
|
||||
raise "Referenced parameter '#{ref}' must be defined" unless definitions && definitions[key]
|
||||
definitions[key]
|
||||
end
|
||||
|
||||
def key_version(ref, swagger_doc)
|
||||
if doc_version(swagger_doc).start_with?('2')
|
||||
ref.sub('#/parameters/', '').to_sym
|
||||
else # Openapi3
|
||||
if ref.start_with?('#/parameters/')
|
||||
ActiveSupport::Deprecation.warn('Rswag::Specs: WARNING: #/parameters/ refs are replaced in OpenAPI3! Rename to #/components/parameters/')
|
||||
ref.sub('#/parameters/', '').to_sym
|
||||
else
|
||||
ref.sub('#/components/parameters/', '').to_sym
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def definition_version(swagger_doc)
|
||||
if doc_version(swagger_doc).start_with?('2')
|
||||
swagger_doc[:parameters]
|
||||
else # Openapi3
|
||||
if swagger_doc.has_key?(:parameters)
|
||||
swagger_doc[:parameters]
|
||||
else
|
||||
components = swagger_doc[:components] || {}
|
||||
components[:parameters]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def add_verb(request, metadata)
|
||||
request[:verb] = metadata[:operation][:verb]
|
||||
end
|
||||
@@ -167,6 +195,10 @@ module Rswag
|
||||
# source_body_param ||= body_param[:param_value]
|
||||
# source_body_param ? source_body_param.to_json : nil
|
||||
# end
|
||||
|
||||
def doc_version(doc)
|
||||
doc[:openapi] || doc[:swagger] || '3'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -66,7 +66,7 @@ module Rswag
|
||||
# end
|
||||
|
||||
def definitions_or_component_schemas(swagger_doc, version)
|
||||
if version.starts_with?('2')
|
||||
if version.start_with?('2')
|
||||
swagger_doc.slice(:definitions)
|
||||
else # Openapi3
|
||||
if swagger_doc.has_key?(:definitions)
|
||||
|
||||
@@ -34,7 +34,7 @@ module Rswag
|
||||
|
||||
swagger_doc = @config.get_swagger_doc(metadata[:swagger_doc])
|
||||
|
||||
if doc_version(swagger_doc).starts_with?('3')
|
||||
if !doc_version(swagger_doc).start_with?('2')
|
||||
upgrade_request_type!(metadata)
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user