Fork of Pleroma with site-specific changes and feature branches https://git.pleroma.social/pleroma/pleroma
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

41 рядки
814B

  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.Recipients do
  5. use Ecto.Type
  6. alias Pleroma.EctoType.ActivityPub.ObjectValidators.ObjectID
  7. def type, do: {:array, ObjectID}
  8. def cast(object) when is_binary(object) do
  9. cast([object])
  10. end
  11. def cast(data) when is_list(data) do
  12. data
  13. |> Enum.reduce_while({:ok, []}, fn element, {:ok, list} ->
  14. case ObjectID.cast(element) do
  15. {:ok, id} ->
  16. {:cont, {:ok, [id | list]}}
  17. _ ->
  18. {:halt, :error}
  19. end
  20. end)
  21. end
  22. def cast(_) do
  23. :error
  24. end
  25. def dump(data) do
  26. {:ok, data}
  27. end
  28. def load(data) do
  29. {:ok, data}
  30. end
  31. end