aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/federator
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2018-02-21 08:51:03 +0100
committerlain <lain@soykaf.club>2018-02-21 08:51:03 +0100
commitb52672294e8cbc6f1ff53b9c7193e55781db84a6 (patch)
tree38e4edd23f5ffc42672fec2326fe31e2ccfbb3a2 /lib/pleroma/web/federator
parent391b3e3586c65b4dc8ce515721e0fff877e854fb (diff)
downloadpleroma-b52672294e8cbc6f1ff53b9c7193e55781db84a6.tar.gz
Move incoming AP to Federator.
Diffstat (limited to 'lib/pleroma/web/federator')
-rw-r--r--lib/pleroma/web/federator/federator.ex24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex
index b64b43c56..9f81264e4 100644
--- a/lib/pleroma/web/federator/federator.ex
+++ b/lib/pleroma/web/federator/federator.ex
@@ -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