Merge remote-tracking branch 'origin/develop' into instance-markup-info

Signed-off-by: Nicole Mikołajczyk <git@mkljczk.pl>
This commit is contained in:
Nicole Mikołajczyk 2025-04-03 10:32:25 +02:00
commit 7234aa8c18
10 changed files with 60 additions and 7 deletions

View file

@ -0,0 +1 @@
Set PATH in the FreeBSD rc script to avoid failures starting the service

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

0
changelog.d/typos.skip Normal file
View file

View file

@ -24,4 +24,6 @@ command=/usr/local/bin/elixir
command_args="--erl \"-detached\" -S /usr/local/bin/mix phx.server" command_args="--erl \"-detached\" -S /usr/local/bin/mix phx.server"
procname="*beam.smp" procname="*beam.smp"
PATH="${PATH}:/usr/local/sbin:/usr/local/bin"
run_rc_command "$1" run_rc_command "$1"

View file

@ -97,7 +97,7 @@ defmodule Pleroma.Web.ApiSpec do
"Frontend management", "Frontend management",
"Instance configuration", "Instance configuration",
"Instance documents", "Instance documents",
"Instance rule managment", "Instance rule management",
"Invites", "Invites",
"MediaProxy cache", "MediaProxy cache",
"OAuth application management", "OAuth application management",

View file

@ -16,7 +16,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.RuleOperation do
def index_operation do def index_operation do
%Operation{ %Operation{
tags: ["Instance rule managment"], tags: ["Instance rule management"],
summary: "Retrieve list of instance rules", summary: "Retrieve list of instance rules",
operationId: "AdminAPI.RuleController.index", operationId: "AdminAPI.RuleController.index",
security: [%{"oAuth" => ["admin:read"]}], security: [%{"oAuth" => ["admin:read"]}],
@ -33,7 +33,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.RuleOperation do
def create_operation do def create_operation do
%Operation{ %Operation{
tags: ["Instance rule managment"], tags: ["Instance rule management"],
summary: "Create new rule", summary: "Create new rule",
operationId: "AdminAPI.RuleController.create", operationId: "AdminAPI.RuleController.create",
security: [%{"oAuth" => ["admin:write"]}], security: [%{"oAuth" => ["admin:write"]}],
@ -49,7 +49,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.RuleOperation do
def update_operation do def update_operation do
%Operation{ %Operation{
tags: ["Instance rule managment"], tags: ["Instance rule management"],
summary: "Modify existing rule", summary: "Modify existing rule",
operationId: "AdminAPI.RuleController.update", operationId: "AdminAPI.RuleController.update",
security: [%{"oAuth" => ["admin:write"]}], security: [%{"oAuth" => ["admin:write"]}],
@ -65,7 +65,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.RuleOperation do
def delete_operation do def delete_operation do
%Operation{ %Operation{
tags: ["Instance rule managment"], tags: ["Instance rule management"],
summary: "Delete rule", summary: "Delete rule",
operationId: "AdminAPI.RuleController.delete", operationId: "AdminAPI.RuleController.delete",
parameters: [Operation.parameter(:id, :path, :string, "Rule ID")], parameters: [Operation.parameter(:id, :path, :string, "Rule ID")],

View file

@ -52,7 +52,7 @@ defmodule Pleroma.Web.ApiSpec.InstanceOperation do
summary: "Retrieve list of instance rules", summary: "Retrieve list of instance rules",
operationId: "InstanceController.rules", operationId: "InstanceController.rules",
responses: %{ responses: %{
200 => Operation.response("Array of domains", "application/json", array_of_rules()) 200 => Operation.response("Array of rules", "application/json", array_of_rules())
} }
} }
end end

View file

@ -261,6 +261,21 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do
end end
defp pleroma_configuration(instance) do 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: %{ metadata: %{
account_activation_required: Keyword.get(instance, :account_activation_required), account_activation_required: Keyword.get(instance, :account_activation_required),
@ -271,6 +286,7 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do
birthday_required: Config.get([:instance, :birthday_required]), birthday_required: Config.get([:instance, :birthday_required]),
birthday_min_age: Config.get([:instance, :birthday_min_age]), birthday_min_age: Config.get([:instance, :birthday_min_age]),
translation: supported_languages(), translation: supported_languages(),
base_urls: base_urls,
markup: markup() markup: markup()
}, },
stats: %{mau: Pleroma.User.active_user_count()}, stats: %{mau: Pleroma.User.active_user_count()},

View file

@ -826,7 +826,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
assert object.data["repliesCount"] == 2 assert object.data["repliesCount"] == 2
end end
test "increates quotes count", %{user: user} do test "increases quotes count", %{user: user} do
user2 = insert(:user) user2 = insert(:user)
{:ok, activity} = CommonAPI.post(user, %{status: "1", visibility: "public"}) {:ok, activity} = CommonAPI.post(user, %{status: "1", visibility: "public"})

View file

@ -161,4 +161,37 @@ defmodule Pleroma.Web.MastodonAPI.InstanceControllerTest do
|> get("/api/v1/instance/translation_languages") |> get("/api/v1/instance/translation_languages")
|> json_response_and_validate_schema(200) |> json_response_and_validate_schema(200)
end 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 end