Class: RequestHandler::FilterParser

Inherits:
SchemaParser show all
Defined in:
lib/request_handler/filter_parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(params:, schema:, additional_url_filter:, schema_options: {}) ⇒ FilterParser

Returns a new instance of FilterParser.

Raises:



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/request_handler/filter_parser.rb', line 7

def initialize(params:, schema:, additional_url_filter:, schema_options: {})
  super(schema: schema, schema_options: schema_options)
  @filter = params.fetch("filter") { {} }
  raise FilterParamsError.new([jsonapi_filter_syntax_error]) unless @filter.is_a?(Hash)

  Array(additional_url_filter).each do |key|
    key = key.to_s
    raise build_error(key) unless @filter[key].nil?

    @filter[key] = params.fetch(key, nil)
  end
end

Instance Method Details

#runObject



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/request_handler/filter_parser.rb', line 20

def run
  validate_schema(filter)
rescue SchemaValidationError => e
  raise FilterParamsError.new((e.errors.map do |schema_error|
    source_param = "filter[#{schema_error[:source][:pointer]}]"
    {
      detail: schema_error[:detail],
      **jsonapi_filter_base_error(source_param: source_param)
    }
  end))
end