Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F5811047
scheduled_activity_worker.ex
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
1 KB
Referenced Files
None
Subscribers
None
scheduled_activity_worker.ex
View Options
# Pleroma: A lightweight social networking server
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma.ScheduledActivityWorker
do
@moduledoc
"""
Sends scheduled activities to the job queue.
"""
alias
Pleroma.Config
alias
Pleroma.ScheduledActivity
alias
Pleroma.User
alias
Pleroma.Web.CommonAPI
use
GenServer
require
Logger
@schedule_interval
:timer
.
minutes
(
1
)
def
start_link
do
GenServer
.
start_link
(
__MODULE__
,
nil
)
end
def
init
(
_
)
do
if
Config
.
get
([
ScheduledActivity
,
:enabled
])
do
schedule_next
()
{
:ok
,
nil
}
else
:ignore
end
end
def
perform
(
:execute
,
scheduled_activity_id
)
do
try
do
{
:ok
,
scheduled_activity
}
=
ScheduledActivity
.
delete
(
scheduled_activity_id
)
%
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
def
handle_info
(
:perform
,
state
)
do
ScheduledActivity
.
due_activities
(
@schedule_interval
)
|>
Enum
.
each
(
fn
scheduled_activity
->
PleromaJobQueue
.
enqueue
(
:scheduled_activities
,
__MODULE__
,
[
:execute
,
scheduled_activity
.
id
])
end
)
schedule_next
()
{
:noreply
,
state
}
end
defp
schedule_next
do
Process
.
send_after
(
self
(),
:perform
,
@schedule_interval
)
end
end
File Metadata
Details
Attached
Mime Type
text/x-ruby
Expires
Thu, Aug 14, 3:28 AM (8 h, 25 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
308355
Default Alt Text
scheduled_activity_worker.ex (1 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment