Class: SensitiveDataFilter::Middleware::ParameterParser

Inherits:
Object
  • Object
show all
Defined in:
lib/sensitive_data_filter/middleware/parameter_parser.rb

Defined Under Namespace

Classes: JsonParser

Constant Summary collapse

NULL_PARSER =
new('', ->(params) { params }, ->(params) { params })
DEFAULT_PARSERS =
[
  new('urlencoded', # e.g.: 'application/x-www-form-urlencoded'
      ->(params) { Rack::Utils.parse_query(params) },
      ->(params) { Rack::Utils.build_query(params) }),
  new('json', # e.g.: 'application/json'
      ->(params) { JsonParser.parse(params) },
      ->(params) { JsonParser.unparse(params) })
].freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(content_type, parse, unparse) ⇒ ParameterParser

Returns a new instance of ParameterParser.



18
19
20
21
22
# File 'lib/sensitive_data_filter/middleware/parameter_parser.rb', line 18

def initialize(content_type, parse, unparse)
  @content_type = content_type
  @parse        = parse
  @unparse      = unparse
end

Class Method Details

.parser_for(content_type) ⇒ Object



14
15
16
# File 'lib/sensitive_data_filter/middleware/parameter_parser.rb', line 14

def self.parser_for(content_type)
  parsers.find { |parser| parser.can_parse? content_type } || NULL_PARSER
end

.parsersObject



10
11
12
# File 'lib/sensitive_data_filter/middleware/parameter_parser.rb', line 10

def self.parsers
  @parsers ||= DEFAULT_PARSERS.dup
end

.register_parser(content_type, parse, unparse) ⇒ Object



6
7
8
# File 'lib/sensitive_data_filter/middleware/parameter_parser.rb', line 6

def self.register_parser(content_type, parse, unparse)
  parsers.unshift new(content_type, parse, unparse)
end

Instance Method Details

#can_parse?(content_type) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/sensitive_data_filter/middleware/parameter_parser.rb', line 24

def can_parse?(content_type)
  content_type.to_s.match @content_type
end

#parse(params) ⇒ Object



28
29
30
# File 'lib/sensitive_data_filter/middleware/parameter_parser.rb', line 28

def parse(params)
  @parse.call params
end

#unparse(params) ⇒ Object



32
33
34
# File 'lib/sensitive_data_filter/middleware/parameter_parser.rb', line 32

def unparse(params)
  @unparse.call params
end