diff options
author | Maksim Pechnikov <parallel588@gmail.com> | 2019-11-27 09:26:37 +0300 |
---|---|---|
committer | Maksim Pechnikov <parallel588@gmail.com> | 2019-11-27 09:26:37 +0300 |
commit | 6f202a401babbc73e93fb09e697c4c844688f557 (patch) | |
tree | ed710d0bae0f09e15afe272a10f6e8d171c7906f /lib/pleroma/workers | |
parent | ac3abb5414bd7a5bbf53678cdf02b6f59063124c (diff) | |
download | pleroma-6f202a401babbc73e93fb09e697c4c844688f557.tar.gz |
moved ScheduledActivity to Oban Periodic jobs
Diffstat (limited to 'lib/pleroma/workers')
-rw-r--r-- | lib/pleroma/workers/cron/scheduled_activity_worker.ex | 41 | ||||
-rw-r--r-- | lib/pleroma/workers/scheduled_activity_worker.ex | 12 |
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 |