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])