summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2021-01-05 20:09:29 +0000
committerlain <lain@soykaf.club>2021-01-05 20:09:29 +0000
commit18296c74736fbf020c5bb99491b9c0288a687043 (patch)
tree461678b71ee102b52ee6e6f75ae50956ba8306cb
parent20a269ed694127ca59ece9c2e4865a627b4daad3 (diff)
parentf9090e00e6f6bec903c8df030c4af74ac378fccf (diff)
Merge branch 'fix/emoji-encoding' into 'develop'
URI.encode custom emojis Closes #2381 See merge request pleroma/pleroma!3235
-rw-r--r--config/emoji.txt1
-rw-r--r--lib/pleroma/web/activity_pub/transmogrifier.ex2
-rw-r--r--priv/static/emoji/dino walking.gifbin0 -> 11213 bytes
-rw-r--r--test/pleroma/web/activity_pub/transmogrifier_test.exs15
4 files changed, 17 insertions, 1 deletions
diff --git a/config/emoji.txt b/config/emoji.txt
index 200768ad1..52b714ee5 100644
--- a/config/emoji.txt
+++ b/config/emoji.txt
@@ -1,2 +1,3 @@
firefox, /emoji/Firefox.gif, Gif,Fun
blank, /emoji/blank.png, Fun
+dinosaur, /emoji/dino walking.gif, Gif
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex
index 565d32433..5499f8a08 100644
--- a/lib/pleroma/web/activity_pub/transmogrifier.ex
+++ b/lib/pleroma/web/activity_pub/transmogrifier.ex
@@ -919,7 +919,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
defp build_emoji_tag({name, url}) do
%{
- "icon" => %{"url" => url, "type" => "Image"},
+ "icon" => %{"url" => "#{URI.encode(url)}", "type" => "Image"},
"name" => ":" <> name <> ":",
"type" => "Emoji",
"updated" => "1970-01-01T00:00:00Z",
diff --git a/priv/static/emoji/dino walking.gif b/priv/static/emoji/dino walking.gif
new file mode 100644
index 000000000..694a541e7
--- /dev/null
+++ b/priv/static/emoji/dino walking.gif
Binary files differ
diff --git a/test/pleroma/web/activity_pub/transmogrifier_test.exs b/test/pleroma/web/activity_pub/transmogrifier_test.exs
index 66ea7664a..aa32ebaab 100644
--- a/test/pleroma/web/activity_pub/transmogrifier_test.exs
+++ b/test/pleroma/web/activity_pub/transmogrifier_test.exs
@@ -281,6 +281,21 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
{:ok, _modified} = Transmogrifier.prepare_outgoing(activity.data)
end
+
+ test "custom emoji urls are URI encoded" do
+ # :dinosaur: filename has a space -> dino walking.gif
+ user = insert(:user)
+
+ {:ok, activity} = CommonAPI.post(user, %{status: "everybody do the dinosaur :dinosaur:"})
+
+ {:ok, prepared} = Transmogrifier.prepare_outgoing(activity.data)
+
+ assert length(prepared["object"]["tag"]) == 1
+
+ url = prepared["object"]["tag"] |> List.first() |> Map.get("icon") |> Map.get("url")
+
+ assert url == "http://localhost:4001/emoji/dino%20walking.gif"
+ end
end
describe "user upgrade" do