mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2025-04-09 04:24:07 +00:00
implemented
This commit is contained in:
parent
2651058fa4
commit
93aa563cfe
3 changed files with 53 additions and 1 deletions
3
changelog.d/siteinfo-baseurls.add
Normal file
3
changelog.d/siteinfo-baseurls.add
Normal file
|
@ -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
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue