+ def verify_websub(websub) do
+ Jobs.enqueue(:federator_outgoing, __MODULE__, [:verify_websub, websub])
+ end
+
+ def request_subscription(sub) do
+ Jobs.enqueue(:federator_outgoing, __MODULE__, [:request_subscription, sub])
+ end
+
+ def refresh_subscriptions() do
+ Jobs.enqueue(:federator_outgoing, __MODULE__, [:refresh_subscriptions])
+ end
+
+ def publish_single_salmon(params) do
+ Jobs.enqueue(:federator_outgoing, __MODULE__, [:publish_single_salmon, params])
+ end
+
+ # Job Worker Callbacks
+
+ def perform(:refresh_subscriptions) do
+ Logger.debug("Federator running refresh subscriptions")
+ Websub.refresh_subscriptions()
+
+ spawn(fn ->
+ # 6 hours
+ Process.sleep(1000 * 60 * 60 * 6)
+ refresh_subscriptions()
+ end)
+ end
+
+ def perform(:request_subscription, websub) do
+ Logger.debug("Refreshing #{websub.topic}")
+
+ with {:ok, websub} <- Websub.request_subscription(websub) do
+ Logger.debug("Successfully refreshed #{websub.topic}")
+ else
+ _e -> Logger.debug("Couldn't refresh #{websub.topic}")
+ end
+ end
+
+ def perform(:publish, activity) do