lib/grape-swagger/endpoint.rb in grape-swagger-1.2.1 vs lib/grape-swagger/endpoint.rb in grape-swagger-1.3.0

- old
+ new

@@ -9,11 +9,11 @@ def content_types_for(target_class) content_types = (target_class.content_types || {}).values if content_types.empty? formats = [target_class.format, target_class.default_format].compact.uniq - formats = Grape::Formatter.formatters({}).keys if formats.empty? + formats = Grape::Formatter.formatters(**{}).keys if formats.empty? content_types = Grape::ContentTypes::CONTENT_TYPES.select do |content_type, _mime_type| formats.include? content_type end.values end @@ -76,15 +76,15 @@ # building path and definitions objects def path_and_definition_objects(namespace_routes, options) @paths = {} @definitions = {} + add_definitions_from options[:models] namespace_routes.each_value do |routes| path_item(routes, options) end - add_definitions_from options[:models] [@paths, @definitions] end def add_definitions_from(models) return if models.nil? @@ -205,23 +205,24 @@ memo[value[:code]][:headers] = value[:headers] if value[:headers] next build_file_response(memo[value[:code]]) if file_response?(value[:model]) - response_model = @item - response_model = expose_params_from_model(value[:model]) if value[:model] - if memo.key?(200) && route.request_method == 'DELETE' && value[:model].nil? memo[204] = memo.delete(200) value[:code] = 204 + next end - next if value[:code] == 204 - next unless !response_model.start_with?('Swagger_doc') && (@definitions[response_model] || value[:model]) + # Explicitly request no model with { model: '' } + next if value[:model] == '' - @definitions[response_model][:description] = description_object(route) + response_model = value[:model] ? expose_params_from_model(value[:model]) : @item + next unless @definitions[response_model] + next if response_model.start_with?('Swagger_doc') + @definitions[response_model][:description] ||= "#{response_model} model" memo[value[:code]][:schema] = build_reference(route, value, response_model, options) memo[value[:code]][:examples] = value[:examples] if value[:examples] end end @@ -362,10 +363,10 @@ options[:token_owner] ? route_hidden.call(send(options[:token_owner].to_sym)) : route_hidden.call end def hidden_parameter?(value) - return false if value.dig(:required) + return false if value[:required] if value.dig(:documentation, :hidden).is_a?(Proc) value.dig(:documentation, :hidden).call else value.dig(:documentation, :hidden)