Handle incoming items through the queue.
authorRoger Braun <roger@rogerbraun.net>
Sat, 6 May 2017 10:34:40 +0000 (12:34 +0200)
committerRoger Braun <roger@rogerbraun.net>
Sat, 6 May 2017 10:34:40 +0000 (12:34 +0200)
lib/pleroma/web/federator/federator.ex
lib/pleroma/web/ostatus/ostatus_controller.ex
lib/pleroma/web/websub/websub_controller.ex

index 69ba7ed7f3ffae30a5f16ba12107729631bbdd88..ab3313de103711632d89507ebc2df6f033c82ec1 100644 (file)
@@ -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 @@ defmodule Pleroma.Web.Federator 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"}
index 5f79cc7e9979ef1a5101af6297696fc791054b3e..e6822463d534a1a44d20e1bdbb9f3153d3f8c29a 100644 (file)
@@ -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 @@ defmodule Pleroma.Web.OStatus.OStatusController 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, "")
index e860ec9e5381c180dde61df581a892cba7a345d3..4fc6932140fe777c8a8d73c56948d24af69d0085 100644 (file)
@@ -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 @@ defmodule Pleroma.Web.Websub.WebsubController 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 ->