2
2
3
3
require 'active_support'
4
4
require 'active_support/core_ext/string/inflections'
5
- require 'grape-swagger/endpoint/params_parser'
5
+ require_relative 'request_param_parsers/headers'
6
+ require_relative 'request_param_parsers/route'
7
+ require_relative 'request_param_parsers/body'
6
8
7
9
module Grape
8
10
class Endpoint # rubocop:disable Metrics/ClassLength
@@ -12,9 +14,7 @@ def content_types_for(target_class)
12
14
if content_types . empty?
13
15
formats = [ target_class . format , target_class . default_format ] . compact . uniq
14
16
formats = GrapeSwagger ::FORMATTER_DEFAULTS . keys if formats . empty?
15
- content_types = GrapeSwagger ::CONTENT_TYPE_DEFAULTS . select do |content_type , _mime_type | # rubocop:disable Style/HashSlice
16
- formats . include? content_type
17
- end . values
17
+ content_types = formats . filter_map { |f | GrapeSwagger ::CONTENT_TYPE_DEFAULTS [ f ] }
18
18
end
19
19
20
20
content_types . uniq
@@ -383,45 +383,15 @@ def build_file_response(memo)
383
383
end
384
384
385
385
def build_request_params ( route , settings )
386
- required = merge_params ( route )
387
- required = GrapeSwagger ::DocMethods ::Headers . parse ( route ) + required unless route . headers . nil?
388
-
389
- default_type ( required )
390
-
391
- request_params = GrapeSwagger ::Endpoint ::ParamsParser . parse_request_params ( required , settings , self )
392
-
393
- request_params . empty? ? required : request_params
394
- end
395
-
396
- def merge_params ( route )
397
- path_params = get_path_params ( route . app &.inheritable_setting &.namespace_stackable )
398
- param_keys = route . params . keys
399
-
400
- # Merge path params options into route params
401
- route_params = route . params
402
- route_params . each_key do |key |
403
- path = path_params [ key ] || { }
404
- params = route_params [ key ]
405
- params = { } unless params . is_a? Hash
406
- route_params [ key ] = path . merge ( params )
407
- end
408
-
409
- route_params . delete_if { |key | key . is_a? ( String ) && param_keys . include? ( key . to_sym ) } . to_a
410
- end
411
-
412
- # Iterates over namespaces recursively
413
- # to build a hash of path params with options, including type
414
- def get_path_params ( stackable_values )
415
- params = { }
416
- return param unless stackable_values
417
- return params unless stackable_values . is_a? Grape ::Util ::StackableValues
418
-
419
- stackable_values &.new_values &.dig ( :namespace ) &.each do |namespace | # rubocop:disable Style/SafeNavigationChainLength
420
- space = namespace . space . to_s . gsub ( ':' , '' )
421
- params [ space ] = namespace . options || { }
386
+ GrapeSwagger . request_param_parsers . each_with_object ( { } ) do |parser_klass , accum |
387
+ params = parser_klass . parse (
388
+ route ,
389
+ accum ,
390
+ settings ,
391
+ self
392
+ )
393
+ accum . merge! ( params . stringify_keys )
422
394
end
423
- inherited_params = get_path_params ( stackable_values . inherited_values )
424
- inherited_params . merge ( params )
425
395
end
426
396
427
397
def default_type ( params )
0 commit comments