diff options
author | William Pitcock <nenolod@dereferenced.org> | 2019-05-12 03:55:17 +0000 |
---|---|---|
committer | William Pitcock <nenolod@dereferenced.org> | 2019-05-12 05:04:16 +0000 |
commit | 10695a28d28d74f4b6b9bba20af66b506b662c07 (patch) | |
tree | 203da07f65584de2e7a7d7baf7957cce3583a675 | |
parent | 0afc8d7856c9fe37de338d1e9365563d986c9319 (diff) | |
download | pleroma-10695a28d28d74f4b6b9bba20af66b506b662c07.tar.gz |
federator: publisher: add publish() wrapper
-rw-r--r-- | config/config.exs | 3 | ||||
-rw-r--r-- | lib/pleroma/web/federator/publisher.ex | 24 |
2 files changed, 22 insertions, 5 deletions
diff --git a/config/config.exs b/config/config.exs index 1e64b79a7..37803383a 100644 --- a/config/config.exs +++ b/config/config.exs @@ -212,6 +212,9 @@ config :pleroma, :instance, registrations_open: true, federating: true, federation_reachability_timeout_days: 7, + federation_publisher_modules: [ + Pleroma.Web.ActivityPub.Publisher + ], allow_relay: true, rewrite_policy: Pleroma.Web.ActivityPub.MRF.NoOpPolicy, public: true, 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 |