From 22ddddce766b5ba867c561dbd8060c67393c5504 Mon Sep 17 00:00:00 2001 From: Roger Braun Date: Sat, 6 May 2017 12:34:40 +0200 Subject: [PATCH] Handle incoming items through the queue. --- lib/pleroma/web/federator/federator.ex | 6 ++++++ lib/pleroma/web/ostatus/ostatus_controller.ex | 4 ++-- lib/pleroma/web/websub/websub_controller.ex | 6 ++---- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex index 69ba7ed7f..ab3313de1 100644 --- a/lib/pleroma/web/federator/federator.ex +++ b/lib/pleroma/web/federator/federator.ex @@ -5,6 +5,7 @@ defmodule Pleroma.Web.Federator do require Logger @websub Application.get_env(:pleroma, :websub) + @ostatus Application.get_env(:pleroma, :ostatus) @max_jobs 10 def start_link do @@ -28,6 +29,11 @@ def handle(:verify_websub, websub) do @websub.verify(websub) end + def handle(:incoming_doc, doc) do + Logger.debug("Got document, trying to parse") + @ostatus.handle_incoming(doc) + end + def handle(type, payload) do Logger.debug(fn -> "Unknown task: #{type}" end) {:error, "Don't know what do do with this"} diff --git a/lib/pleroma/web/ostatus/ostatus_controller.ex b/lib/pleroma/web/ostatus/ostatus_controller.ex index 5f79cc7e9..e6822463d 100644 --- a/lib/pleroma/web/ostatus/ostatus_controller.ex +++ b/lib/pleroma/web/ostatus/ostatus_controller.ex @@ -4,7 +4,7 @@ defmodule Pleroma.Web.OStatus.OStatusController do alias Pleroma.{User, Activity} alias Pleroma.Web.OStatus.{FeedRepresenter, ActivityRepresenter} alias Pleroma.Repo - alias Pleroma.Web.OStatus + alias Pleroma.Web.{OStatus, Federator} import Ecto.Query def feed_redirect(conn, %{"nickname" => nickname}) do @@ -37,7 +37,7 @@ def salmon_incoming(conn, params) do {:ok, magic_key} = Pleroma.Web.Salmon.fetch_magic_key(body) {:ok, doc} = Pleroma.Web.Salmon.decode_and_validate(magic_key, body) - Pleroma.Web.OStatus.handle_incoming(doc) + Federator.enqueue(:incoming_doc, doc) conn |> send_resp(200, "") diff --git a/lib/pleroma/web/websub/websub_controller.ex b/lib/pleroma/web/websub/websub_controller.ex index e860ec9e5..4fc693214 100644 --- a/lib/pleroma/web/websub/websub_controller.ex +++ b/lib/pleroma/web/websub/websub_controller.ex @@ -1,12 +1,10 @@ defmodule Pleroma.Web.Websub.WebsubController do use Pleroma.Web, :controller alias Pleroma.{Repo, User} - alias Pleroma.Web.Websub + alias Pleroma.Web.{Websub, Federator} alias Pleroma.Web.Websub.WebsubClientSubscription require Logger - @ostatus Application.get_env(:pleroma, :ostatus) - def websub_subscription_request(conn, %{"nickname" => nickname} = params) do user = User.get_cached_by_nickname(nickname) @@ -38,7 +36,7 @@ def websub_incoming(conn, %{"id" => id}) do %WebsubClientSubscription{} = websub <- Repo.get(WebsubClientSubscription, id), {:ok, body, _conn} = read_body(conn), ^signature <- Websub.sign(websub.secret, body) do - @ostatus.handle_incoming(body) + Federator.enqueue(:incoming_doc, body) conn |> send_resp(200, "OK") else _e ->