mirror of
https://github.com/ditkrg/rswag.git
synced 2026-01-22 22:06:43 +00:00
add loader for OA3 schema definitions with version based deprecation
notice
This commit is contained in:
parent
2b239ef0f3
commit
095067792f
@ -46,6 +46,11 @@ module Rswag
|
|||||||
raise ConfigurationError, "Unknown swagger_doc '#{name}'" unless swagger_docs[name]
|
raise ConfigurationError, "Unknown swagger_doc '#{name}'" unless swagger_docs[name]
|
||||||
swagger_docs[name]
|
swagger_docs[name]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def get_swagger_doc_version(name)
|
||||||
|
doc = get_swagger_doc(name)
|
||||||
|
doc[:openapi] || doc[:swagger]
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class ConfigurationError < StandardError; end
|
class ConfigurationError < StandardError; end
|
||||||
|
|||||||
@ -44,17 +44,13 @@ module Rswag
|
|||||||
## OA3
|
## OA3
|
||||||
# test_schemas = extract_schemas(metadata)
|
# test_schemas = extract_schemas(metadata)
|
||||||
# return if test_schemas.nil? || test_schemas.empty?
|
# return if test_schemas.nil? || test_schemas.empty?
|
||||||
|
version = @config.get_swagger_doc_version(metadata[:swagger_doc])
|
||||||
# OA3
|
schemas = definitions_or_component_schemas(swagger_doc, version)
|
||||||
# components = swagger_doc[:components] || {}
|
|
||||||
# components_schemas = { components: { schemas: components[:schemas] } }
|
|
||||||
|
|
||||||
# validation_schema = test_schemas[:schema] # response_schema
|
# validation_schema = test_schemas[:schema] # response_schema
|
||||||
validation_schema = response_schema
|
validation_schema = response_schema
|
||||||
.merge('$schema' => 'http://tempuri.org/rswag/specs/extended_schema')
|
.merge('$schema' => 'http://tempuri.org/rswag/specs/extended_schema')
|
||||||
.merge(swagger_doc.slice(:definitions))
|
.merge(schemas)
|
||||||
## OA3
|
|
||||||
# .merge(components_schemas)
|
|
||||||
|
|
||||||
errors = JSON::Validator.fully_validate(validation_schema, body)
|
errors = JSON::Validator.fully_validate(validation_schema, body)
|
||||||
raise UnexpectedResponse, "Expected response body to match schema: #{errors[0]}" if errors.any?
|
raise UnexpectedResponse, "Expected response body to match schema: #{errors[0]}" if errors.any?
|
||||||
@ -68,6 +64,20 @@ module Rswag
|
|||||||
# response_content = metadata[:response][:content] || {producer_content => {}}
|
# response_content = metadata[:response][:content] || {producer_content => {}}
|
||||||
# response_content[producer_content]
|
# response_content[producer_content]
|
||||||
# end
|
# end
|
||||||
|
|
||||||
|
def definitions_or_component_schemas(swagger_doc, version)
|
||||||
|
if version.starts_with?('2')
|
||||||
|
swagger_doc.slice(:definitions)
|
||||||
|
else # Openapi3
|
||||||
|
if swagger_doc.has_key?(:definitions)
|
||||||
|
warn('Rswag::Specs: WARNING: definitions is replaced in OpenAPI3! Rename to components/schemas (in swagger_helper.rb)')
|
||||||
|
return swagger_doc.slice(:definitions)
|
||||||
|
else
|
||||||
|
components = swagger_doc[:components] || {}
|
||||||
|
return { components: { schemas: components[:schemas] } }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class UnexpectedResponse < StandardError; end
|
class UnexpectedResponse < StandardError; end
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user