diff options
author | lain <lain@soykaf.club> | 2018-02-21 08:51:03 +0100 |
---|---|---|
committer | lain <lain@soykaf.club> | 2018-02-21 08:51:03 +0100 |
commit | b52672294e8cbc6f1ff53b9c7193e55781db84a6 (patch) | |
tree | 38e4edd23f5ffc42672fec2326fe31e2ccfbb3a2 /lib/pleroma/web/federator | |
parent | 391b3e3586c65b4dc8ce515721e0fff877e854fb (diff) | |
download | pleroma-b52672294e8cbc6f1ff53b9c7193e55781db84a6.tar.gz |
Move incoming AP to Federator.
Diffstat (limited to 'lib/pleroma/web/federator')
-rw-r--r-- | lib/pleroma/web/federator/federator.ex | 24 |
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 |