Move incoming AP to Federator.
authorlain <lain@soykaf.club>
Wed, 21 Feb 2018 07:51:03 +0000 (08:51 +0100)
committerlain <lain@soykaf.club>
Wed, 21 Feb 2018 07:51:03 +0000 (08:51 +0100)
lib/pleroma/web/activity_pub/activity_pub_controller.ex
lib/pleroma/web/federator/federator.ex

index 835e8bd9de586cb206a115a9cdc9751d48d99c69..513758176a3f39c82ccb04b4b0c05f0e986d0d5d 100644 (file)
@@ -3,6 +3,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do
   alias Pleroma.{User, Repo, Object, Activity}
   alias Pleroma.Web.ActivityPub.{ObjectView, UserView, Transmogrifier}
   alias Pleroma.Web.ActivityPub.ActivityPub
+  alias Pleroma.Web.Federator
 
   require Logger
 
@@ -24,22 +25,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do
 
   # TODO: Ensure that this inbox is a recipient of the message
   def inbox(%{assigns: %{valid_signature: true}} = conn, params) do
-    # File.write("/tmp/incoming.json", Poison.encode!(params))
-    # Logger.info(Poison.encode!(params, [pretty: 2]))
-    with {:ok, _user} <- ap_enabled_actor(params["actor"]),
-         nil <- Activity.get_by_ap_id(params["id"]),
-         {:ok, activity} <- Transmogrifier.handle_incoming(params) do
-      json(conn, "ok")
-    else
-      %Activity{} ->
-        Logger.info("Already had #{params["id"]}")
-        json(conn, "ok")
-      e ->
-        # Just drop those for now
-        Logger.info("Unhandled activity")
-        Logger.info(Poison.encode!(params, [pretty: 2]))
-        json(conn, "ok")
-    end
+    Federator.enqeue(:incoming_ap_doc, params)
+    json(conn, "ok")
   end
 
   def inbox(conn, params) do
@@ -48,15 +35,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do
     json(conn, "ok")
   end
 
-  def ap_enabled_actor(id) do
-    user = User.get_by_ap_id(id)
-    if User.ap_enabled?(user) do
-      {:ok, user}
-    else
-      ActivityPub.make_user_from_ap_id(id)
-    end
-  end
-
   def errors(conn, _e) do
     conn
     |> put_status(500)
index b64b43c5649a80212f3835656037e8ba631917bf..9f81264e4b6200b9b4f9ca04b7e04a63c8b900b2 100644 (file)
@@ -3,6 +3,7 @@ defmodule Pleroma.Web.Federator do
   alias Pleroma.User
   alias Pleroma.Web.{WebFinger, Websub}
   alias Pleroma.Web.ActivityPub.ActivityPub
+  alias Pleroma.Web.ActivityPub.Transmogrifier
   require Logger
 
   @websub Application.get_env(:pleroma, :websub)
@@ -66,6 +67,20 @@ defmodule Pleroma.Web.Federator do
     @ostatus.handle_incoming(doc)
   end
 
+  def handle(:incoming_ap_doc, params) do
+    with {:ok, _user} <- ap_enabled_actor(params["actor"]),
+         nil <- Activity.get_by_ap_id(params["id"]),
+         {:ok, activity} <- Transmogrifier.handle_incoming(params) do
+    else
+      %Activity{} ->
+        Logger.info("Already had #{params["id"]}")
+      e ->
+        # Just drop those for now
+        Logger.info("Unhandled activity")
+        Logger.info(Poison.encode!(params, [pretty: 2]))
+    end
+  end
+
   def handle(:publish_single_ap, params) do
     ActivityPub.publish_one(params)
   end
@@ -145,4 +160,13 @@ defmodule Pleroma.Web.Federator do
   def queue_pop([%{item: element} | queue]) do
     {element, queue}
   end
+
+  def ap_enabled_actor(id) do
+    user = User.get_by_ap_id(id)
+    if User.ap_enabled?(user) do
+      {:ok, user}
+    else
+      ActivityPub.make_user_from_ap_id(id)
+    end
+  end
 end