5
5
require 'grape-swagger/endpoint/params_parser'
6
6
7
7
module Grape
8
- class Endpoint
8
+ class Endpoint # rubocop:disable Metrics/ClassLength
9
9
def content_types_for ( target_class )
10
10
content_types = ( target_class . content_types || { } ) . values
11
11
@@ -241,7 +241,8 @@ def http_codes_from_route(route)
241
241
if route . http_codes . is_a? ( Array ) && route . http_codes . any? { |code | success_code? ( code ) }
242
242
route . http_codes . clone
243
243
else
244
- success_codes_from_route ( route ) + ( route . http_codes || route . options [ :failure ] || [ ] )
244
+ success_codes_from_route ( route ) + default_code_from_route ( route ) +
245
+ ( route . http_codes || route . options [ :failure ] || [ ] )
245
246
end
246
247
end
247
248
@@ -268,6 +269,21 @@ def tag_object(route, path)
268
269
269
270
private
270
271
272
+ def default_code_from_route ( route )
273
+ entity = route . options [ :default_response ]
274
+ return [ ] if entity . nil?
275
+
276
+ default_code = { code : 'default' , message : 'Default Response' }
277
+ if entity . is_a? ( Hash )
278
+ default_code [ :message ] = entity [ :message ] || default_code [ :message ]
279
+ default_code [ :model ] = entity [ :model ] if entity [ :model ] . present?
280
+ else
281
+ default_code [ :model ] = entity
282
+ end
283
+
284
+ [ default_code ]
285
+ end
286
+
271
287
def build_memo_schema ( memo , route , value , response_model , options )
272
288
if memo [ value [ :code ] ] [ :schema ] && value [ :as ]
273
289
memo [ value [ :code ] ] [ :schema ] [ :properties ] . merge! ( build_reference ( route , value , response_model , options ) )
@@ -295,7 +311,7 @@ def build_reference(route, value, response_model, settings)
295
311
else
296
312
build_reference_hash ( response_model )
297
313
end
298
- return reference unless value [ :code ] < 300
314
+ return reference unless value [ :code ] == 'default' || value [ :code ] < 300
299
315
300
316
if value . key? ( :as ) && value . key? ( :is_array )
301
317
reference [ value [ :as ] ] = build_reference_array ( reference [ value [ :as ] ] )
0 commit comments