summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Gleason <alex@alexgleason.me>2022-01-28 14:06:32 -0600
committerAlex Gleason <alex@alexgleason.me>2022-01-28 14:06:32 -0600
commitac3426cbca19c7ca39ab927afc79f27865d32061 (patch)
treef65d45c2dbffa526c11528b71e709ca14e1c5d26
parent5134e691f4f6582e807f49ea2760c0dd44dce805 (diff)
Transmogrifier: federate quotes with _misskey_quote field
-rw-r--r--lib/pleroma/web/activity_pub/transmogrifier.ex9
-rw-r--r--priv/static/schemas/litepub-0.1.jsonld2
-rw-r--r--test/pleroma/web/activity_pub/transmogrifier_test.exs4
3 files changed, 15 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex
index 9548a5d20..2adfd7d13 100644
--- a/lib/pleroma/web/activity_pub/transmogrifier.ex
+++ b/lib/pleroma/web/activity_pub/transmogrifier.ex
@@ -661,6 +661,14 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
def set_reply_to_uri(obj), do: obj
+ # Misskey quotes
+ # Despite being underscored, it's potentially more reliable for interop.
+ def set_quote_url(%{"quoteUrl" => quote_url} = object) when is_binary(quote_url) do
+ Map.put(object, "_misskey_quote", quote_url)
+ end
+
+ def set_quote_url(obj), do: obj
+
@doc """
Serialized Mastodon-compatible `replies` collection containing _self-replies_.
Based on Mastodon's ActivityPub::NoteSerializer#replies.
@@ -715,6 +723,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
|> prepare_attachments
|> set_conversation
|> set_reply_to_uri
+ |> set_quote_url
|> set_replies
|> strip_internal_fields
|> strip_internal_tags
diff --git a/priv/static/schemas/litepub-0.1.jsonld b/priv/static/schemas/litepub-0.1.jsonld
index 7802b3946..07a36ccea 100644
--- a/priv/static/schemas/litepub-0.1.jsonld
+++ b/priv/static/schemas/litepub-0.1.jsonld
@@ -17,6 +17,7 @@
"ostatus": "http://ostatus.org#",
"schema": "http://schema.org#",
"toot": "http://joinmastodon.org/ns#",
+ "misskey": "https://misskey-hub.net/ns#",
"value": "schema:value",
"sensitive": "as:sensitive",
"litepub": "http://litepub.social/ns#",
@@ -27,6 +28,7 @@
"@type": "@id"
},
"quoteUrl": "as:quoteUrl",
+ "_misskey_quote": "misskey:_misskey_quote",
"oauthRegistrationEndpoint": {
"@id": "litepub:oauthRegistrationEndpoint",
"@type": "@id"
diff --git a/test/pleroma/web/activity_pub/transmogrifier_test.exs b/test/pleroma/web/activity_pub/transmogrifier_test.exs
index bae8f1d5e..21dd86f73 100644
--- a/test/pleroma/web/activity_pub/transmogrifier_test.exs
+++ b/test/pleroma/web/activity_pub/transmogrifier_test.exs
@@ -333,7 +333,11 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
{:ok, modified} = Transmogrifier.prepare_outgoing(quote_post.data)
quoted_post = Object.normalize(quoted_post)
+
assert modified["object"]["quoteUrl"] == quoted_post.data["id"]
+
+ # Add Misskey's quote as a fallback
+ assert modified["object"]["_misskey_quote"] == quoted_post.data["id"]
end
end