pleroma/lib/pleroma/web/activity_pub/object_validators/types/recipients.ex

37 lines
657 B
Elixir
Raw Normal View History

2020-04-08 13:55:43 +00:00
defmodule Pleroma.Web.ActivityPub.ObjectValidators.Types.Recipients do
use Ecto.Type
alias Pleroma.Web.ActivityPub.ObjectValidators.Types.ObjectID
def type, do: {:array, ObjectID}
2020-04-08 13:55:43 +00:00
def cast(object) when is_binary(object) do
cast([object])
end
def cast(data) when is_list(data) do
data
2020-05-03 13:28:24 +00:00
|> Enum.reduce_while({:ok, []}, fn element, {:ok, list} ->
case ObjectID.cast(element) do
{:ok, id} ->
{:cont, {:ok, [id | list]}}
_ ->
{:halt, :error}
end
end)
end
2020-04-08 13:55:43 +00:00
def cast(_) do
:error
end
def dump(data) do
{:ok, data}
end
def load(data) do
{:ok, data}
end
end