diff options
author | lain <lain@soykaf.club> | 2020-04-29 19:08:08 +0200 |
---|---|---|
committer | lain <lain@soykaf.club> | 2020-04-29 19:08:08 +0200 |
commit | b8056e69e0a2505fc466dd5742b0986b7c1895ae (patch) | |
tree | ce80cef00217d84992a3154a84bfa03b3f8b7162 /lib | |
parent | 58fded9858edbeb318dc011cb313e82a86fbafcb (diff) | |
download | pleroma-b8056e69e0a2505fc466dd5742b0986b7c1895ae.tar.gz pleroma-b8056e69e0a2505fc466dd5742b0986b7c1895ae.zip |
Object Validator Types: Add Recipients.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/activity_pub/object_validators/types/recipients.ex | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/object_validators/types/recipients.ex b/lib/pleroma/web/activity_pub/object_validators/types/recipients.ex new file mode 100644 index 000000000..48fe61e1a --- /dev/null +++ b/lib/pleroma/web/activity_pub/object_validators/types/recipients.ex @@ -0,0 +1,34 @@ +defmodule Pleroma.Web.ActivityPub.ObjectValidators.Types.Recipients do + use Ecto.Type + + alias Pleroma.Web.ActivityPub.ObjectValidators.Types.ObjectID + + def type, do: {:array, ObjectID} + + def cast(object) when is_binary(object) do + cast([object]) + end + + def cast(data) when is_list(data) do + data + |> Enum.reduce({:ok, []}, fn element, acc -> + case {acc, ObjectID.cast(element)} do + {:error, _} -> :error + {_, :error} -> :error + {{:ok, list}, {:ok, id}} -> {:ok, [id | list]} + end + end) + end + + def cast(_) do + :error + end + + def dump(data) do + {:ok, data} + end + + def load(data) do + {:ok, data} + end +end |