+ def init() do
+ # 1 minute
+ Process.sleep(1000 * 60 * 1)
+ refresh_subscriptions()
+ end
+
+ # Client API
+
+ def incoming_doc(doc) do
+ Jobs.enqueue(:federator_incoming, __MODULE__, [:incoming_doc, doc])
+ end
+
+ def incoming_ap_doc(params) do
+ Jobs.enqueue(:federator_incoming, __MODULE__, [:incoming_ap_doc, params])
+ end
+
+ def publish(activity, priority \\ 1) do
+ Jobs.enqueue(:federator_outgoing, __MODULE__, [:publish, activity], priority)
+ end
+
+ def publish_single_ap(params) do
+ Jobs.enqueue(:federator_outgoing, __MODULE__, [:publish_single_ap, params])
+ end
+
+ def publish_single_websub(websub) do
+ Jobs.enqueue(:federator_outgoing, __MODULE__, [:publish_single_websub, websub])
+ end
+
+ 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])