Bladeren bron

Merge branch 'accept-embedded-announce-object' into 'develop'

Inline object when Announcing a self-owned private object

See merge request pleroma/pleroma!1769
object-id-column
kaniini 4 jaren geleden
bovenliggende
commit
debd0a3066
2 gewijzigde bestanden met toevoegingen van 35 en 0 verwijderingen
  1. +21
    -0
      lib/pleroma/web/activity_pub/transmogrifier.ex
  2. +14
    -0
      test/web/activity_pub/transmogrifier_test.exs

+ 21
- 0
lib/pleroma/web/activity_pub/transmogrifier.ex Bestand weergeven

@@ -830,6 +830,27 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
{:ok, data}
end

def prepare_outgoing(%{"type" => "Announce", "actor" => ap_id, "object" => object_id} = data) do
object =
object_id
|> Object.normalize()

data =
if Visibility.is_private?(object) && object.data["actor"] == ap_id do
data |> Map.put("object", object |> Map.get(:data) |> prepare_object)
else
data |> maybe_fix_object_url
end

data =
data
|> strip_internal_fields
|> Map.merge(Utils.make_json_ld_header())
|> Map.delete("bcc")

{:ok, data}
end

# Mastodon Accept/Reject requires a non-normalized object containing the actor URIs,
# because of course it does.
def prepare_outgoing(%{"type" => "Accept"} = data) do


+ 14
- 0
test/web/activity_pub/transmogrifier_test.exs Bestand weergeven

@@ -1076,6 +1076,20 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
end

describe "prepare outgoing" do
test "it inlines private announced objects" do
user = insert(:user)

{:ok, activity} = CommonAPI.post(user, %{"status" => "hey", "visibility" => "private"})

{:ok, announce_activity, _} = CommonAPI.repeat(activity.id, user)

{:ok, modified} = Transmogrifier.prepare_outgoing(announce_activity.data)
object = modified["object"]

assert modified["object"]["content"] == "hey"
assert modified["object"]["actor"] == modified["object"]["attributedTo"]
end

test "it turns mentions into tags" do
user = insert(:user)
other_user = insert(:user)


Laden…
Annuleren
Opslaan