mirror of
https://github.com/ditkrg/rswag.git
synced 2026-01-25 07:16:40 +00:00
Support parameters provided at the 'path' level
This commit is contained in:
@@ -37,8 +37,14 @@ module Rswag
|
||||
|
||||
def parameter(attributes)
|
||||
attributes[:required] = true if attributes[:in].to_sym == :path
|
||||
metadata[:operation][:parameters] ||= []
|
||||
metadata[:operation][:parameters] << attributes
|
||||
|
||||
if metadata.has_key?(:operation)
|
||||
metadata[:operation][:parameters] ||= []
|
||||
metadata[:operation][:parameters] << attributes
|
||||
else
|
||||
metadata[:path_item][:parameters] ||= []
|
||||
metadata[:path_item][:parameters] << attributes
|
||||
end
|
||||
end
|
||||
|
||||
def response(code, description, &block)
|
||||
|
||||
@@ -44,7 +44,13 @@ module Rswag
|
||||
private
|
||||
|
||||
def parameters_in(location)
|
||||
(@api_metadata[:operation][:parameters] || [])
|
||||
path_item_params = @api_metadata[:path_item][:parameters] || []
|
||||
operation_params = @api_metadata[:operation][:parameters] || []
|
||||
applicable_params = operation_params
|
||||
.concat(path_item_params)
|
||||
.uniq { |p| p[:name] } # operation params should override path_item params
|
||||
|
||||
applicable_params
|
||||
.map { |p| p['$ref'] ? resolve_parameter(p['$ref']) : p } # resolve any references
|
||||
.concat(resolve_api_key_parameters)
|
||||
.select { |p| p[:in] == location }
|
||||
|
||||
@@ -49,18 +49,18 @@ module Rswag
|
||||
def metadata_to_swagger(metadata)
|
||||
response_code = metadata[:response][:code]
|
||||
response = metadata[:response].reject { |k,v| k == :code }
|
||||
|
||||
verb = metadata[:operation][:verb]
|
||||
operation = metadata[:operation]
|
||||
.reject { |k,v| k == :verb }
|
||||
.merge(responses: { response_code => response })
|
||||
|
||||
{
|
||||
paths: {
|
||||
metadata[:path_item][:template] => {
|
||||
verb => operation
|
||||
}
|
||||
}
|
||||
}
|
||||
path_template = metadata[:path_item][:template]
|
||||
path_item = metadata[:path_item]
|
||||
.reject { |k,v| k == :template }
|
||||
.merge(verb => operation)
|
||||
|
||||
{ paths: { path_template => path_item } }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user