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
19
# 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.new(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.new(required: "must be an Array") unless required.is_a?(Array)

  @required = required
end

Instance Method Details

#runObject



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

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