diff options
author | Haelwenn <contact+git.pleroma.social@hacktivis.me> | 2020-05-22 05:47:53 +0000 |
---|---|---|
committer | Haelwenn <contact+git.pleroma.social@hacktivis.me> | 2020-05-22 05:47:53 +0000 |
commit | 7b02bfca51f95f56a5d12724b80b16019507cce9 (patch) | |
tree | 780c7b06b7cbb8ee7e39d113948776416aebae4e /lib/pleroma/web/common_api | |
parent | a57e7f3503c485de64c4e001529a6e06a1a35b25 (diff) | |
parent | bf1b221f94a53c90cda832e9bfb6c5fa0e6524f2 (diff) | |
download | pleroma-7b02bfca51f95f56a5d12724b80b16019507cce9.tar.gz |
Merge branch 'announce-validator' into 'develop'
Announce validator
See merge request pleroma/pleroma!2567
Diffstat (limited to 'lib/pleroma/web/common_api')
-rw-r--r-- | lib/pleroma/web/common_api/common_api.ex | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex index 447dbe4e6..dbb3d7ade 100644 --- a/lib/pleroma/web/common_api/common_api.ex +++ b/lib/pleroma/web/common_api/common_api.ex @@ -127,18 +127,19 @@ defmodule Pleroma.Web.CommonAPI do end def repeat(id, user, params \\ %{}) do - with %Activity{data: %{"type" => "Create"}} = activity <- Activity.get_by_id(id) do - object = Object.normalize(activity) - announce_activity = Utils.get_existing_announce(user.ap_id, object) - public = public_announce?(object, params) - - if announce_activity do - {:ok, announce_activity, object} - else - ActivityPub.announce(user, object, nil, true, public) - end + with %Activity{data: %{"type" => "Create"}} = activity <- Activity.get_by_id(id), + object = %Object{} <- Object.normalize(activity, false), + {_, nil} <- {:existing_announce, Utils.get_existing_announce(user.ap_id, object)}, + public = public_announce?(object, params), + {:ok, announce, _} <- Builder.announce(user, object, public: public), + {:ok, activity, _} <- Pipeline.common_pipeline(announce, local: true) do + {:ok, activity} else - _ -> {:error, :not_found} + {:existing_announce, %Activity{} = announce} -> + {:ok, announce} + + _ -> + {:error, :not_found} end end |