recipients.ex (657B)
1 defmodule Pleroma.Web.ActivityPub.ObjectValidators.Types.Recipients do 2 use Ecto.Type 3 4 alias Pleroma.Web.ActivityPub.ObjectValidators.Types.ObjectID 5 6 def type, do: {:array, ObjectID} 7 8 def cast(object) when is_binary(object) do 9 cast([object]) 10 end 11 12 def cast(data) when is_list(data) do 13 data 14 |> Enum.reduce_while({:ok, []}, fn element, {:ok, list} -> 15 case ObjectID.cast(element) do 16 {:ok, id} -> 17 {:cont, {:ok, [id | list]}} 18 19 _ -> 20 {:halt, :error} 21 end 22 end) 23 end 24 25 def cast(_) do 26 :error 27 end 28 29 def dump(data) do 30 {:ok, data} 31 end 32 33 def load(data) do 34 {:ok, data} 35 end 36 end