@@ -208,18 +208,30 @@ def params_object(route, options, path)
208
208
end
209
209
210
210
def response_body_object ( _ , _ , consumes , parameters )
211
- body_parameters , form_parameters = parameters . partition { |p | p [ :in ] == 'body' }
212
- result = consumes . map { |c | response_body_parameter_object ( body_parameters , c ) }
211
+ file_params , other_params = parameters . partition { |p | p [ :schema ] [ :type ] == 'file' }
212
+ body_params , form_params = other_params . partition { |p | p [ :in ] == 'body' || p [ :schema ] [ :type ] == 'json' }
213
+ result = consumes . map { |c | response_body_parameter_object ( body_params , c ) }
213
214
214
- unless form_parameters . empty?
215
- result << response_body_parameter_object ( form_parameters , 'application/x-www-form-urlencoded' )
215
+ unless form_params . empty?
216
+ result << response_body_parameter_object ( form_params , 'application/x-www-form-urlencoded' )
217
+ end
218
+
219
+ unless file_params . empty?
220
+ result << response_body_parameter_object ( file_params , 'application/octet-stream' )
216
221
end
217
222
218
223
{ content : result . to_h }
219
224
end
220
225
221
226
def response_body_parameter_object ( parameters , content_type )
222
- properties = parameters . map { |value | [ value [ :name ] , value . except ( :name , :in , :required , :schema ) . merge ( value [ :schema ] ) ] } . to_h
227
+ properties = parameters . map do |value |
228
+ value [ :schema ] [ :type ] = 'object' if value [ :schema ] [ :type ] == 'json'
229
+ if value [ :schema ] [ :type ] == 'file'
230
+ value [ :schema ] [ :format ] = 'binary'
231
+ value [ :schema ] [ :type ] = 'string'
232
+ end
233
+ [ value [ :name ] , value . except ( :name , :in , :required , :schema ) . merge ( value [ :schema ] ) ]
234
+ end . to_h
223
235
required_values = parameters . select { |param | param [ :required ] } . map { |required | required [ :name ] }
224
236
result = { schema : { type : :object , properties : properties } }
225
237
result [ :schema ] [ :required ] = required_values unless required_values . empty?
0 commit comments