Class: RequestHandler::FieldsetsParser

Inherits:
Object
  • Object
show all
Defined in:
lib/request_handler/fieldsets_parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(params:, allowed: {}, required: []) ⇒ FieldsetsParser

Returns a new instance of FieldsetsParser.



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

def initialize(params:, allowed: {}, required: [])
  @params = params
  allowed.reject! { |_k, v| v == false }
  allowed.each_pair do |_key, value|
    raise InternalArgumentError, allowed: 'must be a Schema or a Boolean' unless
      RequestHandler.configuration.validation_engine.valid_schema?(value) ||
      value.is_a?(TrueClass) || value.is_a?(FalseClass)
  end
  @allowed = allowed
  raise InternalArgumentError, required: 'must be an Array' unless required.is_a?(Array)
  @required = required
end

Instance Method Details

#runObject



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

def run
  fields = params['fields']
  raise_missing_fields_param unless fields
  fieldsets = fields.to_h.each_with_object({}) do |(type, values), memo|
    type = type.to_sym
    raise_invalid_field_option(type)
    memo[type] = parse_options(type, values)
  end
  check_required_fieldsets_types(fieldsets)
end