logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git
commit: 18296c74736fbf020c5bb99491b9c0288a687043
parent 20a269ed694127ca59ece9c2e4865a627b4daad3
Author: lain <lain@soykaf.club>
Date:   Tue,  5 Jan 2021 20:09:29 +0000

Merge branch 'fix/emoji-encoding' into 'develop'

URI.encode custom emojis

Closes #2381

See merge request pleroma/pleroma!3235

Diffstat:

Mconfig/emoji.txt1+
Mlib/pleroma/web/activity_pub/transmogrifier.ex2+-
Apriv/static/emoji/dino walking.gif0
Mtest/pleroma/web/activity_pub/transmogrifier_test.exs15+++++++++++++++
4 files changed, 17 insertions(+), 1 deletion(-)

diff --git 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 @@ -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 Binary files differ. diff --git 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