diff options
author | lain <lain@soykaf.club> | 2020-04-28 13:38:02 +0200 |
---|---|---|
committer | lain <lain@soykaf.club> | 2020-04-28 13:38:02 +0200 |
commit | 906cf53ab94742327d073f56255f695c91339295 (patch) | |
tree | e530404fadb5e72628d44b6ce0370f86dd40ee10 /lib | |
parent | 3d040b1a87da66ed53a763f781477bd4f5a146d3 (diff) | |
download | pleroma-906cf53ab94742327d073f56255f695c91339295.tar.gz pleroma-906cf53ab94742327d073f56255f695c91339295.zip |
Recipient Type: Cast all elements as ObjectIDs.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/activity_pub/object_validators/types/recipients.ex | 15 |
1 files changed, 13 insertions, 2 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 index 5a3040842..48fe61e1a 100644 --- a/lib/pleroma/web/activity_pub/object_validators/types/recipients.ex +++ b/lib/pleroma/web/activity_pub/object_validators/types/recipients.ex @@ -1,13 +1,24 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.Types.Recipients do use Ecto.Type - def type, do: {:array, :string} + 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), do: {:ok, data} + 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 |