diff options
author | William Pitcock <nenolod@dereferenced.org> | 2019-05-21 00:41:58 +0000 |
---|---|---|
committer | William Pitcock <nenolod@dereferenced.org> | 2019-05-21 21:38:56 +0000 |
commit | 73df9d690d5c1a9c11f0f04b8d877c0677022591 (patch) | |
tree | 42432550c061d5a4d04c5e8e36213a656b293f1a /lib | |
parent | c2b0b82e6a6d40f945feacc001ad984a17e23336 (diff) | |
download | pleroma-73df9d690d5c1a9c11f0f04b8d877c0677022591.tar.gz pleroma-73df9d690d5c1a9c11f0f04b8d877c0677022591.zip |
object: fetcher: add support for reinjecting pruned objects
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/object/fetcher.ex | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/lib/pleroma/object/fetcher.ex b/lib/pleroma/object/fetcher.ex index 8d4bcc95e..bb9388d4f 100644 --- a/lib/pleroma/object/fetcher.ex +++ b/lib/pleroma/object/fetcher.ex @@ -8,6 +8,19 @@ defmodule Pleroma.Object.Fetcher do @httpoison Application.get_env(:pleroma, :httpoison) + defp reinject_object(data) do + Logger.debug("Reinjecting object #{data["id"]}") + + with data <- Transmogrifier.fix_object(data), + {:ok, object} <- Object.create(data) do + {:ok, object} + else + e -> + Logger.error("Error while processing object: #{inspect(e)}") + {:error, e} + end + end + # TODO: # This will create a Create activity, which we need internally at the moment. def fetch_object_from_id(id) do @@ -26,12 +39,17 @@ defmodule Pleroma.Object.Fetcher do "object" => data }, :ok <- Containment.contain_origin(id, params), - {:ok, activity} <- Transmogrifier.handle_incoming(params) do - {:ok, Object.normalize(activity, false)} + {:ok, activity} <- Transmogrifier.handle_incoming(params), + {:object, _data, %Object{} = object} <- + {:object, data, Object.normalize(activity, false)} do + {:ok, object} else {:error, {:reject, nil}} -> {:reject, nil} + {:object, data, nil} -> + reinject_object(data) + object = %Object{} -> {:ok, object} |