Merge pull request #17 from drewish/param-refs

Support parameter references
This commit is contained in:
domaindrivendev 2016-09-12 22:32:24 -07:00 committed by GitHub
commit 1150b9c030
2 changed files with 20 additions and 1 deletions

View File

@ -38,8 +38,16 @@ module SwaggerRails
metadata[:produces] = mime_types
end
# Accepts parameter objects:
# parameter :petId, in: :path, type: :integer, required: true
# Or references:
# parameter ref: '#/parameters/Pet'
def parameter(name, attributes={})
metadata[:parameters] << { name: name.to_s }.merge(attributes)
metadata[:parameters] << if name.respond_to?(:has_key?)
{ '$ref': name.delete(:ref) || name.delete('ref') }
else
{ name: name.to_s }.merge(attributes)
end
end
def response(code, description, &block)

View File

@ -22,12 +22,23 @@ module SwaggerRails
def params_data_for(test, parameters)
parameters.map do |parameter|
parameter = resolve_param_ref(parameter[:$ref]) if parameter.has_key?(:$ref)
parameter
.slice(:name, :in)
.merge(value: test.send(parameter[:name].to_s.underscore))
end
end
def resolve_param_ref ref
raise "Invalid parameter reference: #{ref}" unless %r{#/parameters/(?<name>.+)} =~ ref
parameter = (@swagger_doc[:parameters][name] || @swagger_doc[:parameters][name.to_sym])
raise "Unknown parameter reference: #{ref}" unless parameter
parameter.merge(name: name)
end
def build_path(path_template, params_data)
path_params_data = params_data.select { |p| p[:in] == :path }