aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/workers
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pleroma/workers')
-rw-r--r--lib/pleroma/workers/cron/scheduled_activity_worker.ex41
-rw-r--r--lib/pleroma/workers/scheduled_activity_worker.ex12
2 files changed, 41 insertions, 12 deletions
diff --git a/lib/pleroma/workers/cron/scheduled_activity_worker.ex b/lib/pleroma/workers/cron/scheduled_activity_worker.ex
new file mode 100644
index 000000000..407ab687a
--- /dev/null
+++ b/lib/pleroma/workers/cron/scheduled_activity_worker.ex
@@ -0,0 +1,41 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Workers.Cron.ScheduledActivityWorker do
+ @moduledoc """
+ The worker to post scheduled actvities.
+ """
+
+ use Oban.Worker, queue: "scheduled_activities"
+ alias Pleroma.Config
+ alias Pleroma.ScheduledActivity
+ alias Pleroma.User
+ alias Pleroma.Web.CommonAPI
+
+ require Logger
+
+ @schedule_interval :timer.minutes(1)
+
+ @impl Oban.Worker
+ def perform(_opts, _job) do
+ if Config.get([ScheduledActivity, :enabled]) do
+ @schedule_interval
+ |> ScheduledActivity.due_activities()
+ |> Enum.each(&post_activity/1)
+ end
+ end
+
+ def post_activity(scheduled_activity) do
+ try do
+ {:ok, scheduled_activity} = ScheduledActivity.delete(scheduled_activity)
+ %User{} = user = User.get_cached_by_id(scheduled_activity.user_id)
+ {:ok, _result} = CommonAPI.post(user, scheduled_activity.params)
+ rescue
+ error ->
+ Logger.error(
+ "#{__MODULE__} Couldn't create a status from the scheduled activity: #{inspect(error)}"
+ )
+ end
+ end
+end
diff --git a/lib/pleroma/workers/scheduled_activity_worker.ex b/lib/pleroma/workers/scheduled_activity_worker.ex
deleted file mode 100644
index ca7d53af1..000000000
--- a/lib/pleroma/workers/scheduled_activity_worker.ex
+++ /dev/null
@@ -1,12 +0,0 @@
-# Pleroma: A lightweight social networking server
-# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
-# SPDX-License-Identifier: AGPL-3.0-only
-
-defmodule Pleroma.Workers.ScheduledActivityWorker do
- use Pleroma.Workers.WorkerHelper, queue: "scheduled_activities"
-
- @impl Oban.Worker
- def perform(%{"op" => "execute", "activity_id" => activity_id}, _job) do
- Pleroma.Daemons.ScheduledActivityDaemon.perform(:execute, activity_id)
- end
-end