lib/grape-swagger/endpoint.rb in grape-swagger-1.3.1 vs lib/grape-swagger/endpoint.rb in grape-swagger-1.4.0
- old
+ new
@@ -268,15 +268,22 @@
private
def build_memo_schema(memo, route, value, response_model, options)
if memo[value[:code]][:schema] && value[:as]
memo[value[:code]][:schema][:properties].merge!(build_reference(route, value, response_model, options))
+
+ if value[:required]
+ memo[value[:code]][:schema][:required] ||= []
+ memo[value[:code]][:schema][:required] << value[:as].to_s
+ end
+
elsif value[:as]
memo[value[:code]][:schema] = {
type: :object,
properties: build_reference(route, value, response_model, options)
}
+ memo[value[:code]][:schema][:required] = [value[:as].to_s] if value[:required]
else
memo[value[:code]][:schema] = build_reference(route, value, response_model, options)
end
end
@@ -320,11 +327,11 @@
{ type: 'object', properties: { route.settings.dig(:swagger, :root) => reference } }
end
end
def file_response?(value)
- value.to_s.casecmp('file').zero? ? true : false
+ value.to_s.casecmp('file').zero?
end
def build_file_response(memo)
memo['schema'] = { type: 'file' }
end
@@ -411,9 +418,10 @@
default_code[:message] = entity[:message] || route.description || default_code[:message].sub('{item}', @item)
default_code[:examples] = entity[:examples] if entity[:examples]
default_code[:headers] = entity[:headers] if entity[:headers]
default_code[:as] = entity[:as] if entity[:as]
default_code[:is_array] = entity[:is_array] if entity[:is_array]
+ default_code[:required] = entity[:required] if entity[:required]
else
default_code = GrapeSwagger::DocMethods::StatusCodes.get[route.request_method.downcase.to_sym]
default_code[:model] = entity if entity
default_code[:message] = route.description || default_code[:message].sub('{item}', @item)
end