aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorWilliam Pitcock <nenolod@dereferenced.org>2018-05-29 10:18:23 +0000
committerWilliam Pitcock <nenolod@dereferenced.org>2018-06-11 22:15:53 +0000
commitd96377f3590c08a2c38941299aedb977b1b5a8e5 (patch)
treee08fc5571c18819178a9d13aafc54420b347bb83 /lib
parent5eed1ea18145b16999b29f0a4c2313784c8cff0e (diff)
downloadpleroma-d96377f3590c08a2c38941299aedb977b1b5a8e5.tar.gz
activitypub transmogrifier: accept/reject outgoing: we might send the actual object instead of the URI in some cases, handle it
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/activity_pub/transmogrifier.ex18
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex
index 08173f78d..e7a3420d2 100644
--- a/lib/pleroma/web/activity_pub/transmogrifier.ex
+++ b/lib/pleroma/web/activity_pub/transmogrifier.ex
@@ -443,7 +443,14 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
# Mastodon Accept/Reject requires a non-normalized object containing the actor URIs,
# because of course it does.
def prepare_outgoing(%{"type" => "Accept"} = data) do
- with follow_activity <- Activity.get_by_ap_id(data["object"]) do
+ follow_activity_id =
+ if is_binary(data["object"]) do
+ data["object"]
+ else
+ data["object"]["id"]
+ end
+
+ with follow_activity <- Activity.get_by_ap_id(follow_activity_id) do
object = %{
"actor" => follow_activity.actor,
"object" => follow_activity.data["object"],
@@ -461,7 +468,14 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
end
def prepare_outgoing(%{"type" => "Reject"} = data) do
- with follow_activity <- Activity.get_by_ap_id(data["object"]) do
+ follow_activity_id =
+ if is_binary(data["object"]) do
+ data["object"]
+ else
+ data["object"]["id"]
+ end
+
+ with follow_activity <- Activity.get_by_ap_id(follow_activity_id) do
object = %{
"actor" => follow_activity.actor,
"object" => follow_activity.data["object"],