aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/federator/publisher.ex24
1 files changed, 19 insertions, 5 deletions
diff --git a/lib/pleroma/web/federator/publisher.ex b/lib/pleroma/web/federator/publisher.ex
index 2e533ae94..8777a3deb 100644
--- a/lib/pleroma/web/federator/publisher.ex
+++ b/lib/pleroma/web/federator/publisher.ex
@@ -3,6 +3,9 @@
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.Federator.Publisher do
+ alias Pleroma.Activity
+ alias Pleroma.Config
+ alias Pleroma.User
alias Pleroma.Web.Federator.RetryQueue
require Logger
@@ -24,11 +27,6 @@ defmodule Pleroma.Web.Federator.Publisher do
@callback publish_one(Map.t()) :: {:ok, Map.t()} | {:error, any()}
@doc """
- Relays an activity to all specified peers.
- """
- @callback publish(Pleroma.User.t(), Pleroma.Activity.t()) :: :ok | {:error, any()}
-
- @doc """
Enqueue publishing a single activity.
"""
@spec enqueue_one(module(), Map.t()) :: :ok
@@ -50,4 +48,20 @@ defmodule Pleroma.Web.Federator.Publisher do
Logger.debug("Unknown task: #{type}")
{:error, "Don't know what to do with this"}
end
+
+ @doc """
+ Relays an activity to all specified peers.
+ """
+ @callback publish(Pleroma.User.t(), Pleroma.Activity.t()) :: :ok | {:error, any()}
+
+ @spec publish(Pleroma.User.t(), Pleroma.Activity.t()) :: :ok
+ def publish(%User{} = user, %Activity{} = activity) do
+ Config.get([:instance, :federation_publisher_modules])
+ |> Enum.each(fn module ->
+ Logger.info("Publishing #{activity.data["id"]} using #{inspect(module)}")
+ module.publish(user, activity)
+ end)
+
+ :ok
+ end
end