lib/grape-swagger/endpoint.rb in grape-swagger-0.20.1 vs lib/grape-swagger/endpoint.rb in grape-swagger-0.20.2
- old
+ new
@@ -22,11 +22,11 @@
{
info: info_object(options[:info].merge(version: options[:api_version])),
swagger: '2.0',
produces: content_types_for(target_class),
authorizations: options[:authorizations],
- host: GrapeSwagger::DocMethods::OptionalObject.build(:host, options, request.env['HTTP_HOST']),
+ host: GrapeSwagger::DocMethods::OptionalObject.build(:host, options, request.host_with_port),
basePath: GrapeSwagger::DocMethods::OptionalObject.build(:base_path, options, request.env['SCRIPT_NAME']),
tags: GrapeSwagger::DocMethods::TagNameDescription.build(options),
schemes: options[:schemes].is_a?(String) ? [options[:schemes]] : options[:schemes]
}.delete_if { |_, value| value.blank? }
end
@@ -103,11 +103,10 @@
end
def method_object(route, options, path)
method = {}
method[:description] = description_object(route, options[:markdown])
- method[:headers] = route.route_headers if route.route_headers
method[:produces] = produces_object(route, options[:produces] || options[:format])
method[:consumes] = consumes_object(route, options[:format])
method[:parameters] = params_object(route)
method[:responses] = response_object(route, options[:markdown])
method[:tags] = tag_object(route, options[:version])
@@ -192,18 +191,17 @@
private
def partition_params(route)
declared_params = route.route_settings[:declared_params] if route.route_settings[:declared_params].present?
required, exposed = route.route_params.partition { |x| x.first.is_a? String }
-
+ required.concat GrapeSwagger::DocMethods::Headers.parse(route) unless route.route_headers.nil?
default_type(required)
default_type(exposed)
- unless declared_params.nil?
+ unless declared_params.nil? && route.route_headers.nil?
request_params = parse_request_params(required)
end
-
if !exposed.empty?
exposed_params = exposed.each_with_object({}) { |x, memo| memo[x.first] = x.last }
properties = parse_response_params(exposed_params)
else
properties = parse_response_params(required)
@@ -213,12 +211,11 @@
unless properties.empty? || (route.route_method == 'DELETE' && !@entity)
@definitions[key] = { type: 'object', properties: properties } unless @definitions.key?(key)
@definitions[key][:properties].merge!(properties) if @definitions.key?(key)
end
-
- return route.route_params if route.route_params && !route.route_settings[:declared_params].present?
+ return route.route_params if route.route_params.present? && !route.route_settings[:declared_params].present?
request_params || {}
end
def default_type(params)
params.each do |param|
@@ -242,9 +239,10 @@
def parse_response_params(params)
return if params.nil?
params.each_with_object({}) do |x, memo|
+ next if x[1].fetch(:documentation, {}).fetch(:in, nil).to_s == 'header'
x[0] = x.last[:as] if x.last[:as]
model = x.last[:using] if x.last[:using].present?
model ||= x.last[:documentation][:type] if x.last[:documentation] && could_it_be_a_model?(x.last[:documentation])