mirror of
https://github.com/ditkrg/rswag.git
synced 2026-01-25 15:22:56 +00:00
add support for openapi 3 securitySchemas
This commit is contained in:
@@ -41,12 +41,8 @@ module Rswag
|
||||
|
||||
def derive_security_params(metadata, swagger_doc)
|
||||
requirements = metadata[:operation][:security] || swagger_doc[:security] || []
|
||||
scheme_names = requirements.flat_map { |r| r.keys }
|
||||
## OA3
|
||||
# scheme_names = requirements.flat_map(&:keys)
|
||||
# components = swagger_doc[:components] || {}
|
||||
# schemes = (components[:securitySchemes] || {}).slice(*scheme_names).values
|
||||
schemes = (swagger_doc[:securityDefinitions] || {}).slice(*scheme_names).values
|
||||
scheme_names = requirements.flat_map(&:keys)
|
||||
schemes = security_version(scheme_names, swagger_doc)
|
||||
|
||||
schemes.map do |scheme|
|
||||
param = (scheme[:type] == :apiKey) ? scheme.slice(:name, :in) : { name: 'Authorization', in: :header }
|
||||
@@ -54,6 +50,20 @@ module Rswag
|
||||
end
|
||||
end
|
||||
|
||||
def security_version(scheme_names, swagger_doc)
|
||||
if doc_version(swagger_doc).start_with?('2')
|
||||
(swagger_doc[:securityDefinitions] || {}).slice(*scheme_names).values
|
||||
else # Openapi3
|
||||
if swagger_doc.has_key?(:securityDefinitions)
|
||||
ActiveSupport::Deprecation.warn('Rswag::Specs: WARNING: securityDefinitions is replaced in OpenAPI3! Rename to components/securitySchemes (in swagger_helper.rb)')
|
||||
(swagger_doc[:securityDefinitions] || {}).slice(*scheme_names).values
|
||||
else
|
||||
components = swagger_doc[:components] || {}
|
||||
(components[:securitySchemes] || {}).slice(*scheme_names).values
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def resolve_parameter(ref, swagger_doc)
|
||||
key = key_version(ref, swagger_doc)
|
||||
definitions = definition_version(swagger_doc)
|
||||
@@ -80,6 +90,7 @@ module Rswag
|
||||
swagger_doc[:parameters]
|
||||
else # Openapi3
|
||||
if swagger_doc.has_key?(:parameters)
|
||||
ActiveSupport::Deprecation.warn('Rswag::Specs: WARNING: parameters is replaced in OpenAPI3! Rename to components/parameters (in swagger_helper.rb)')
|
||||
swagger_doc[:parameters]
|
||||
else
|
||||
components = swagger_doc[:components] || {}
|
||||
|
||||
Reference in New Issue
Block a user