Transmogrifier: Extract user update handling tests.
[akkoma] / lib / pleroma / web / activity_pub / object_validators / types / recipients.ex
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