commit: 1ae5c2b020810eda7243e7e6b52cf89e6bb7f8d0
parent 4a28b81b591d6b87fa27378744052ccf8be44308
Author: Lain Soykaf <lain@lain.com>
Date: Wed, 12 Jun 2024 12:40:01 +0400
Transmogrifier: Encode Emoji id to be valid.
Diffstat:
3 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/changelog.d/3280-fix-emoji-ids.fix b/changelog.d/3280-fix-emoji-ids.fix
@@ -0,0 +1 @@
+Fix Emoji object IDs not always being valid
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex
@@ -913,9 +913,11 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
def add_emoji_tags(object), do: object
- defp build_emoji_tag({name, url}) do
+ def build_emoji_tag({name, url}) do
+ url = URI.encode(url)
+
%{
- "icon" => %{"url" => "#{URI.encode(url)}", "type" => "Image"},
+ "icon" => %{"url" => "#{url}", "type" => "Image"},
"name" => ":" <> name <> ":",
"type" => "Emoji",
"updated" => "1970-01-01T00:00:00Z",
diff --git a/test/pleroma/web/activity_pub/transmogrifier/emoji_tag_building_test.exs b/test/pleroma/web/activity_pub/transmogrifier/emoji_tag_building_test.exs
@@ -0,0 +1,14 @@
+defmodule Pleroma.Web.ActivityPub.Transmogrifier.EmojiTagBuildingTest do
+ use Pleroma.DataCase, async: true
+
+ alias Pleroma.Web.ActivityPub.Transmogrifier
+
+ test "it encodes the id to be a valid url" do
+ name = "hanapog"
+ url = "https://misskey.local.live/emojis/hana pog.png"
+
+ tag = Transmogrifier.build_emoji_tag({name, url})
+
+ assert tag["id"] == "https://misskey.local.live/emojis/hana%20pog.png"
+ end
+end