fetcher: Reinject Question through validator
This commit is contained in:
parent
6b9c4bc1f1
commit
ad867ccfa1
1 changed files with 19 additions and 0 deletions
|
@ -9,6 +9,7 @@ defmodule Pleroma.Object.Fetcher do
|
||||||
alias Pleroma.Repo
|
alias Pleroma.Repo
|
||||||
alias Pleroma.Signature
|
alias Pleroma.Signature
|
||||||
alias Pleroma.Web.ActivityPub.InternalFetchActor
|
alias Pleroma.Web.ActivityPub.InternalFetchActor
|
||||||
|
alias Pleroma.Web.ActivityPub.ObjectValidator
|
||||||
alias Pleroma.Web.ActivityPub.Transmogrifier
|
alias Pleroma.Web.ActivityPub.Transmogrifier
|
||||||
alias Pleroma.Web.Federator
|
alias Pleroma.Web.Federator
|
||||||
|
|
||||||
|
@ -32,6 +33,24 @@ defp maybe_reinject_internal_fields(%{data: %{} = old_data}, new_data) do
|
||||||
defp maybe_reinject_internal_fields(_, new_data), do: new_data
|
defp maybe_reinject_internal_fields(_, new_data), do: new_data
|
||||||
|
|
||||||
@spec reinject_object(struct(), map()) :: {:ok, Object.t()} | {:error, any()}
|
@spec reinject_object(struct(), map()) :: {:ok, Object.t()} | {:error, any()}
|
||||||
|
defp reinject_object(%Object{data: %{"type" => "Question"}} = object, new_data) do
|
||||||
|
Logger.debug("Reinjecting object #{new_data["id"]}")
|
||||||
|
|
||||||
|
with new_data <- Transmogrifier.fix_object(new_data),
|
||||||
|
data <- maybe_reinject_internal_fields(object, new_data),
|
||||||
|
{:ok, data, _} <- ObjectValidator.validate(data, %{}),
|
||||||
|
changeset <- Object.change(object, %{data: data}),
|
||||||
|
changeset <- touch_changeset(changeset),
|
||||||
|
{:ok, object} <- Repo.insert_or_update(changeset),
|
||||||
|
{:ok, object} <- Object.set_cache(object) do
|
||||||
|
{:ok, object}
|
||||||
|
else
|
||||||
|
e ->
|
||||||
|
Logger.error("Error while processing object: #{inspect(e)}")
|
||||||
|
{:error, e}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
defp reinject_object(%Object{} = object, new_data) do
|
defp reinject_object(%Object{} = object, new_data) do
|
||||||
Logger.debug("Reinjecting object #{new_data["id"]}")
|
Logger.debug("Reinjecting object #{new_data["id"]}")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue