diff options
author | William Pitcock <nenolod@dereferenced.org> | 2018-06-13 22:14:53 +0000 |
---|---|---|
committer | William Pitcock <nenolod@dereferenced.org> | 2018-06-13 22:19:38 +0000 |
commit | 401e8af9437f8a53540b93fc80d659c15f06e137 (patch) | |
tree | c472d6f80e812d1e37fa16c508c45dac15ee1a57 | |
parent | ea42ba603fd0d3acd744f9f0b8ffb402e3ff1b2c (diff) | |
download | pleroma-401e8af9437f8a53540b93fc80d659c15f06e137.tar.gz |
activitypub transmogrifier: handle activity lookup failure
with the introduction of MRF, it is possible that an activity may be orphaned from it's parent, if
an activity in the chain was rejected by the active MRF policies. accordingly, handle this in the
same way as any other orphaned activity.
closes #156
-rw-r--r-- | lib/pleroma/web/activity_pub/transmogrifier.ex | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index e7a3420d2..4c27a5704 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -30,14 +30,19 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do when not is_nil(in_reply_to_id) do case ActivityPub.fetch_object_from_id(in_reply_to_id) do {:ok, replied_object} -> - activity = Activity.get_create_activity_by_object_ap_id(replied_object.data["id"]) - - object - |> Map.put("inReplyTo", replied_object.data["id"]) - |> Map.put("inReplyToAtomUri", object["inReplyToAtomUri"] || in_reply_to_id) - |> Map.put("inReplyToStatusId", activity.id) - |> Map.put("conversation", replied_object.data["context"] || object["conversation"]) - |> Map.put("context", replied_object.data["context"] || object["conversation"]) + with %Activity{} = activity <- + Activity.get_create_activity_by_object_ap_id(replied_object.data["id"]) do + object + |> Map.put("inReplyTo", replied_object.data["id"]) + |> Map.put("inReplyToAtomUri", object["inReplyToAtomUri"] || in_reply_to_id) + |> Map.put("inReplyToStatusId", activity.id) + |> Map.put("conversation", replied_object.data["context"] || object["conversation"]) + |> Map.put("context", replied_object.data["context"] || object["conversation"]) + else + e -> + Logger.error("Couldn't fetch #{object["inReplyTo"]} #{inspect(e)}") + object + end e -> Logger.error("Couldn't fetch #{object["inReplyTo"]} #{inspect(e)}") |