From 93aa563cfe0bca64be3fa5d4bc74843d87f03937 Mon Sep 17 00:00:00 2001 From: Moon Man Date: Wed, 2 Apr 2025 07:00:45 -0400 Subject: [PATCH 1/2] implemented --- changelog.d/siteinfo-baseurls.add | 3 ++ .../web/mastodon_api/views/instance_view.ex | 18 +++++++++- .../controllers/instance_controller_test.exs | 33 +++++++++++++++++++ 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 changelog.d/siteinfo-baseurls.add diff --git a/changelog.d/siteinfo-baseurls.add b/changelog.d/siteinfo-baseurls.add new file mode 100644 index 000000000..d0ff986d7 --- /dev/null +++ b/changelog.d/siteinfo-baseurls.add @@ -0,0 +1,3 @@ +### Added + +- Add `base_urls` to the /api/v1/instance pleroma metadata which provides information about the base URLs for media_proxy and uploads when configured \ No newline at end of file diff --git a/lib/pleroma/web/mastodon_api/views/instance_view.ex b/lib/pleroma/web/mastodon_api/views/instance_view.ex index 4b0480f66..fd72e2f91 100644 --- a/lib/pleroma/web/mastodon_api/views/instance_view.ex +++ b/lib/pleroma/web/mastodon_api/views/instance_view.ex @@ -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) diff --git a/test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs index 38b547770..8a0fe5259 100644 --- a/test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs +++ b/test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs @@ -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 From 8322134a2112cca2deb98c5ad324ed7c7e76f704 Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 2 Apr 2025 12:30:32 +0000 Subject: [PATCH 2/2] Edit siteinfo-baseurls.add --- changelog.d/siteinfo-baseurls.add | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/changelog.d/siteinfo-baseurls.add b/changelog.d/siteinfo-baseurls.add index d0ff986d7..6f0f19847 100644 --- a/changelog.d/siteinfo-baseurls.add +++ b/changelog.d/siteinfo-baseurls.add @@ -1,3 +1 @@ -### Added - -- Add `base_urls` to the /api/v1/instance pleroma metadata which provides information about the base URLs for media_proxy and uploads when configured \ No newline at end of file +Add `base_urls` to the /api/v1/instance pleroma metadata which provides information about the base URLs for media_proxy and uploads when configured \ No newline at end of file