File tree 3 files changed +49
-7
lines changed
3 files changed +49
-7
lines changed Original file line number Diff line number Diff line change 10
10
11
11
require 'grape-swagger/doc_methods'
12
12
require 'grape-swagger/model_parsers'
13
+ require 'grape-swagger/request_param_parser_registry'
13
14
14
15
module GrapeSwagger
15
16
class << self
16
17
def model_parsers
17
18
@model_parsers ||= GrapeSwagger ::ModelParsers . new
18
19
end
20
+
21
+ def request_param_parsers
22
+ @request_param_parsers ||= GrapeSwagger ::RequestParamParserRegistry . new
23
+ end
19
24
end
20
25
autoload :Rake , 'grape-swagger/rake/oapi_tasks'
21
26
Original file line number Diff line number Diff line change 8
8
9
9
module Grape
10
10
class Endpoint # rubocop:disable Metrics/ClassLength
11
- REQUEST_PARAM_PARSERS = [
12
- GrapeSwagger ::RequestParamParsers ::Headers ,
13
- GrapeSwagger ::RequestParamParsers ::Route ,
14
- GrapeSwagger ::RequestParamParsers ::Body
15
- ] . freeze
16
-
17
11
def content_types_for ( target_class )
18
12
content_types = ( target_class . content_types || { } ) . values
19
13
@@ -389,7 +383,7 @@ def build_file_response(memo)
389
383
end
390
384
391
385
def build_request_params ( route , settings )
392
- REQUEST_PARAM_PARSERS . each_with_object ( { } ) do |parser_klass , accum |
386
+ GrapeSwagger . request_param_parsers . each_with_object ( { } ) do |parser_klass , accum |
393
387
params = parser_klass . parse (
394
388
route ,
395
389
accum ,
Original file line number Diff line number Diff line change
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'request_param_parsers/headers'
4
+ require_relative 'request_param_parsers/route'
5
+ require_relative 'request_param_parsers/body'
6
+
7
+ module GrapeSwagger
8
+ class RequestParamParserRegistry
9
+ DEFAULT_PARSERS = [
10
+ GrapeSwagger ::RequestParamParsers ::Headers ,
11
+ GrapeSwagger ::RequestParamParsers ::Route ,
12
+ GrapeSwagger ::RequestParamParsers ::Body
13
+ ] . freeze
14
+
15
+ include Enumerable
16
+
17
+ def initialize
18
+ @parsers = DEFAULT_PARSERS . dup
19
+ end
20
+
21
+ def register ( klass )
22
+ @parsers << klass
23
+ end
24
+
25
+ def insert_before ( before_klass , klass )
26
+ insert_at = @parsers . index ( before_klass )
27
+ insert_at = @parsers . length - 1 if insert_at . nil?
28
+ @parsers . insert ( insert_at , klass )
29
+ end
30
+
31
+ def insert_after ( after_klass , klass )
32
+ insert_at = @parsers . index ( after_klass )
33
+ insert_at = @parsers . length - 1 if insert_at . nil?
34
+ @parsers . insert ( insert_at + 1 , klass )
35
+ end
36
+
37
+ def each
38
+ @parsers . each do |klass |
39
+ yield klass
40
+ end
41
+ end
42
+ end
43
+ end
You can’t perform that action at this time.
0 commit comments