Merge branch 'emoji-use-v1-api' into 'develop'

Make remote emoji packs API use specifically the V1 URL

See merge request pleroma/pleroma!4028
This commit is contained in:
tusooa 2024-01-10 01:26:46 +00:00
commit 8bc59e9743
4 changed files with 20 additions and 10 deletions

View File

@ -0,0 +1 @@
When downloading remote emojis packs, account for pagination

View File

@ -0,0 +1 @@
Make remote emoji packs API use specifically the V1 URL. Akkoma does not understand it without V1, and it works either way with normal pleroma, so no reason to not do this

View File

@ -209,7 +209,9 @@ def list_remote(opts) do
with :ok <- validate_shareable_packs_available(uri) do with :ok <- validate_shareable_packs_available(uri) do
uri uri
|> URI.merge("/api/pleroma/emoji/packs?page=#{opts[:page]}&page_size=#{opts[:page_size]}") |> URI.merge(
"/api/v1/pleroma/emoji/packs?page=#{opts[:page]}&page_size=#{opts[:page_size]}"
)
|> http_get() |> http_get()
end end
end end
@ -249,8 +251,12 @@ def download(name, url, as) do
uri = url |> String.trim() |> URI.parse() uri = url |> String.trim() |> URI.parse()
with :ok <- validate_shareable_packs_available(uri), with :ok <- validate_shareable_packs_available(uri),
{:ok, %{"files_count" => files_count}} <-
uri |> URI.merge("/api/v1/pleroma/emoji/pack?name=#{name}&page_size=0") |> http_get(),
{:ok, remote_pack} <- {:ok, remote_pack} <-
uri |> URI.merge("/api/pleroma/emoji/pack?name=#{name}") |> http_get(), uri
|> URI.merge("/api/v1/pleroma/emoji/pack?name=#{name}&page_size=#{files_count}")
|> http_get(),
{:ok, %{sha: sha, url: url} = pack_info} <- fetch_pack_info(remote_pack, uri, name), {:ok, %{sha: sha, url: url} = pack_info} <- fetch_pack_info(remote_pack, uri, name),
{:ok, archive} <- download_archive(url, sha), {:ok, archive} <- download_archive(url, sha),
pack <- copy_as(remote_pack, as || name), pack <- copy_as(remote_pack, as || name),
@ -592,7 +598,7 @@ defp fetch_pack_info(remote_pack, uri, name) do
{:ok, {:ok,
%{ %{
sha: sha, sha: sha,
url: URI.merge(uri, "/api/pleroma/emoji/packs/archive?name=#{name}") |> to_string() url: URI.merge(uri, "/api/v1/pleroma/emoji/packs/archive?name=#{name}") |> to_string()
}} }}
%{"fallback-src" => src, "fallback-src-sha256" => sha} when is_binary(src) -> %{"fallback-src" => src, "fallback-src-sha256" => sha} when is_binary(src) ->

View File

@ -116,7 +116,7 @@ test "shareable instance", %{admin_conn: admin_conn, conn: conn} do
%{method: :get, url: "https://example.com/nodeinfo/2.1.json"} -> %{method: :get, url: "https://example.com/nodeinfo/2.1.json"} ->
json(%{metadata: %{features: ["shareable_emoji_packs"]}}) json(%{metadata: %{features: ["shareable_emoji_packs"]}})
%{method: :get, url: "https://example.com/api/pleroma/emoji/packs?page=2&page_size=1"} -> %{method: :get, url: "https://example.com/api/v1/pleroma/emoji/packs?page=2&page_size=1"} ->
json(resp) json(resp)
end) end)
@ -199,7 +199,7 @@ test "shared pack from remote and non shared from fallback-src", %{
%{ %{
method: :get, method: :get,
url: "https://example.com/api/pleroma/emoji/pack?name=test_pack" url: "https://example.com/api/v1/pleroma/emoji/pack?name=test_pack&page_size=" <> _n
} -> } ->
conn conn
|> get("/api/pleroma/emoji/pack?name=test_pack") |> get("/api/pleroma/emoji/pack?name=test_pack")
@ -208,7 +208,7 @@ test "shared pack from remote and non shared from fallback-src", %{
%{ %{
method: :get, method: :get,
url: "https://example.com/api/pleroma/emoji/packs/archive?name=test_pack" url: "https://example.com/api/v1/pleroma/emoji/packs/archive?name=test_pack"
} -> } ->
conn conn
|> get("/api/pleroma/emoji/packs/archive?name=test_pack") |> get("/api/pleroma/emoji/packs/archive?name=test_pack")
@ -217,7 +217,9 @@ test "shared pack from remote and non shared from fallback-src", %{
%{ %{
method: :get, method: :get,
url: "https://example.com/api/pleroma/emoji/pack?name=test_pack_nonshared" url:
"https://example.com/api/v1/pleroma/emoji/pack?name=test_pack_nonshared&page_size=" <>
_n
} -> } ->
conn conn
|> get("/api/pleroma/emoji/pack?name=test_pack_nonshared") |> get("/api/pleroma/emoji/pack?name=test_pack_nonshared")
@ -305,14 +307,14 @@ test "checksum fail", %{admin_conn: admin_conn} do
%{ %{
method: :get, method: :get,
url: "https://example.com/api/pleroma/emoji/pack?name=pack_bad_sha" url: "https://example.com/api/v1/pleroma/emoji/pack?name=pack_bad_sha&page_size=" <> _n
} -> } ->
{:ok, pack} = Pleroma.Emoji.Pack.load_pack("pack_bad_sha") {:ok, pack} = Pleroma.Emoji.Pack.load_pack("pack_bad_sha")
%Tesla.Env{status: 200, body: Jason.encode!(pack)} %Tesla.Env{status: 200, body: Jason.encode!(pack)}
%{ %{
method: :get, method: :get,
url: "https://example.com/api/pleroma/emoji/packs/archive?name=pack_bad_sha" url: "https://example.com/api/v1/pleroma/emoji/packs/archive?name=pack_bad_sha"
} -> } ->
%Tesla.Env{ %Tesla.Env{
status: 200, status: 200,
@ -342,7 +344,7 @@ test "other error", %{admin_conn: admin_conn} do
%{ %{
method: :get, method: :get,
url: "https://example.com/api/pleroma/emoji/pack?name=test_pack" url: "https://example.com/api/v1/pleroma/emoji/pack?name=test_pack&page_size=" <> _n
} -> } ->
{:ok, pack} = Pleroma.Emoji.Pack.load_pack("test_pack") {:ok, pack} = Pleroma.Emoji.Pack.load_pack("test_pack")
%Tesla.Env{status: 200, body: Jason.encode!(pack)} %Tesla.Env{status: 200, body: Jason.encode!(pack)}