add upgrade parameters refs to openapi3

This commit is contained in:
Greg Myers
2020-03-21 22:34:13 +00:00
parent 70eb277e04
commit 9414ca16b6
4 changed files with 74 additions and 11 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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