summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLain Soykaf <lain@lain.com>2024-06-12 12:40:01 +0400
committerLain Soykaf <lain@lain.com>2024-06-12 12:41:33 +0400
commit1ae5c2b020810eda7243e7e6b52cf89e6bb7f8d0 (patch)
tree3844903798e80281d694f19cde6ca1d04c0dced6
parent4a28b81b591d6b87fa27378744052ccf8be44308 (diff)
downloadpleroma-1ae5c2b020810eda7243e7e6b52cf89e6bb7f8d0.tar.gz
pleroma-1ae5c2b020810eda7243e7e6b52cf89e6bb7f8d0.zip
Transmogrifier: Encode Emoji id to be valid.
-rw-r--r--changelog.d/3280-fix-emoji-ids.fix1
-rw-r--r--lib/pleroma/web/activity_pub/transmogrifier.ex6
-rw-r--r--test/pleroma/web/activity_pub/transmogrifier/emoji_tag_building_test.exs14
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
new file mode 100644
index 000000000..1bce5b653
--- /dev/null
+++ 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
index edfe73a25..4d851559f 100644
--- 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
new file mode 100644
index 000000000..c632c199c
--- /dev/null
+++ 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