Module: Jumbotron::Deserializers::Public::Includes

Defined in:
app/deserializers/jumbotron/deserializers/public/includes.rb

Class Method Summary collapse

Class Method Details

.parse(raw) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/deserializers/jumbotron/deserializers/public/includes.rb', line 9

def parse(raw)
  return CommandTower::Deserializers::CoercionResult.ok([]) if raw.nil?

  list = raw.is_a?(Array) ? raw : [raw]
  symbols = list.map { |item| item.is_a?(String) ? item.strip.to_sym : item }
  unless symbols.all? { |item| item.is_a?(Symbol) && item != :"" }
    return CommandTower::Deserializers::CoercionResult.fail(code: "invalid_request", field: "include")
  end

  unknown = symbols - Jumbotron::Public::ALLOWED_INCLUDES
  if unknown.any?
    return CommandTower::Deserializers::CoercionResult.fail(
      code: "invalid_request",
      field: "include",
      details: { unknown: unknown }
    )
  end

  CommandTower::Deserializers::CoercionResult.ok(symbols.uniq)
end