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
|