mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2024-05-20 02:28:07 +00:00
Use 'Application' for relay actor type
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
This commit is contained in:
parent
4e355b8595
commit
2102ff82fa
1
changelog.d/relay-actor-type.fix
Normal file
1
changelog.d/relay-actor-type.fix
Normal file
|
@ -0,0 +1 @@
|
|||
Instance relay now uses actor type Application
|
|
@ -2079,12 +2079,12 @@ defmodule Pleroma.User do
|
|||
Creates an internal service actor by URI if missing.
|
||||
Optionally takes nickname for addressing.
|
||||
"""
|
||||
@spec get_or_create_service_actor_by_ap_id(String.t(), String.t()) :: User.t() | nil
|
||||
def get_or_create_service_actor_by_ap_id(uri, nickname) do
|
||||
@spec get_or_create_service_actor_by_ap_id(String.t(), String.t(), String.t()) :: User.t() | nil
|
||||
def get_or_create_service_actor_by_ap_id(uri, nickname, actor_type \\ "Person") do
|
||||
{_, user} =
|
||||
case get_cached_by_ap_id(uri) do
|
||||
nil ->
|
||||
with {:error, %{errors: errors}} <- create_service_actor(uri, nickname) do
|
||||
with {:error, %{errors: errors}} <- create_service_actor(uri, nickname, actor_type) do
|
||||
Logger.error("Cannot create service actor: #{uri}/.\n#{inspect(errors)}")
|
||||
{:error, nil}
|
||||
end
|
||||
|
@ -2106,15 +2106,16 @@ defmodule Pleroma.User do
|
|||
|> update_and_set_cache()
|
||||
end
|
||||
|
||||
@spec create_service_actor(String.t(), String.t()) ::
|
||||
@spec create_service_actor(String.t(), String.t(), String.t()) ::
|
||||
{:ok, User.t()} | {:error, Ecto.Changeset.t()}
|
||||
defp create_service_actor(uri, nickname) do
|
||||
defp create_service_actor(uri, nickname, actor_type) do
|
||||
%User{
|
||||
invisible: true,
|
||||
local: true,
|
||||
ap_id: uri,
|
||||
nickname: nickname,
|
||||
follower_address: uri <> "/followers"
|
||||
follower_address: uri <> "/followers",
|
||||
actor_type: actor_type
|
||||
}
|
||||
|> change
|
||||
|> put_private_key()
|
||||
|
|
|
@ -11,12 +11,13 @@ defmodule Pleroma.Web.ActivityPub.Relay do
|
|||
require Logger
|
||||
|
||||
@nickname "relay"
|
||||
@actor_type "Application"
|
||||
|
||||
@spec ap_id() :: String.t()
|
||||
def ap_id, do: "#{Pleroma.Web.Endpoint.url()}/#{@nickname}"
|
||||
|
||||
@spec get_actor() :: User.t() | nil
|
||||
def get_actor, do: User.get_or_create_service_actor_by_ap_id(ap_id(), @nickname)
|
||||
def get_actor, do: User.get_or_create_service_actor_by_ap_id(ap_id(), @nickname, @actor_type)
|
||||
|
||||
@spec follow(String.t()) :: {:ok, Activity.t()} | {:error, any()}
|
||||
def follow(target_instance) do
|
||||
|
|
|
@ -63,6 +63,20 @@ defmodule Pleroma.UserTest do
|
|||
end) =~ "Cannot create service actor:"
|
||||
end
|
||||
|
||||
test "returns user of given type" do
|
||||
uri = "#{Pleroma.Web.Endpoint.url()}/relay"
|
||||
followers_uri = "#{uri}/followers"
|
||||
|
||||
assert %User{
|
||||
nickname: "relay",
|
||||
invisible: true,
|
||||
local: true,
|
||||
ap_id: ^uri,
|
||||
follower_address: ^followers_uri,
|
||||
actor_type: "Application"
|
||||
} = User.get_or_create_service_actor_by_ap_id(uri, "relay", "Application")
|
||||
end
|
||||
|
||||
test "returns invisible actor" do
|
||||
uri = "#{Pleroma.Web.Endpoint.url()}/internal/fetch-test"
|
||||
followers_uri = "#{uri}/followers"
|
||||
|
|
Loading…
Reference in a new issue