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
# 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, [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



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

def run
  validate_schema(filter)
rescue SchemaValidationError => e
  raise FilterParamsError, (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