Merge branch 'siteinfo-baseurls' into 'develop'

Provide media proxy and upload base urls in siteinfo

See merge request pleroma/pleroma!4349
This commit is contained in:
lain 2025-04-02 13:00:42 +00:00
commit 1775a4db08
3 changed files with 51 additions and 1 deletions

View file

@ -0,0 +1 @@
Add `base_urls` to the /api/v1/instance pleroma metadata which provides information about the base URLs for media_proxy and uploads when configured

View file

@ -261,6 +261,21 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do
end
defp pleroma_configuration(instance) do
base_urls = %{}
base_urls =
if Config.get([:media_proxy, :enabled]) do
Map.put(base_urls, :media_proxy, Config.get([:media_proxy, :base_url]))
else
base_urls
end
base_urls =
case Config.get([Pleroma.Upload, :base_url]) do
nil -> base_urls
url -> Map.put(base_urls, :upload, url)
end
%{
metadata: %{
account_activation_required: Keyword.get(instance, :account_activation_required),
@ -270,7 +285,8 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do
post_formats: Config.get([:instance, :allowed_post_formats]),
birthday_required: Config.get([:instance, :birthday_required]),
birthday_min_age: Config.get([:instance, :birthday_min_age]),
translation: supported_languages()
translation: supported_languages(),
base_urls: base_urls
},
stats: %{mau: Pleroma.User.active_user_count()},
vapid_public_key: Keyword.get(Pleroma.Web.Push.vapid_config(), :public_key)

View file

@ -161,4 +161,37 @@ defmodule Pleroma.Web.MastodonAPI.InstanceControllerTest do
|> get("/api/v1/instance/translation_languages")
|> json_response_and_validate_schema(200)
end
test "base_urls in pleroma metadata", %{conn: conn} do
media_proxy_base_url = "https://media.example.org"
upload_base_url = "https://uploads.example.org"
clear_config([:media_proxy, :enabled], true)
clear_config([:media_proxy, :base_url], media_proxy_base_url)
clear_config([Pleroma.Upload, :base_url], upload_base_url)
conn = get(conn, "/api/v1/instance")
assert result = json_response_and_validate_schema(conn, 200)
assert result["pleroma"]["metadata"]["base_urls"]["media_proxy"] == media_proxy_base_url
assert result["pleroma"]["metadata"]["base_urls"]["upload"] == upload_base_url
# Test when media_proxy is disabled
clear_config([:media_proxy, :enabled], false)
conn = get(conn, "/api/v1/instance")
assert result = json_response_and_validate_schema(conn, 200)
refute Map.has_key?(result["pleroma"]["metadata"]["base_urls"], "media_proxy")
assert result["pleroma"]["metadata"]["base_urls"]["upload"] == upload_base_url
# Test when upload base_url is not set
clear_config([Pleroma.Upload, :base_url], nil)
conn = get(conn, "/api/v1/instance")
assert result = json_response_and_validate_schema(conn, 200)
refute Map.has_key?(result["pleroma"]["metadata"]["base_urls"], "media_proxy")
refute Map.has_key?(result["pleroma"]["metadata"]["base_urls"], "upload")
end
end