activitypub: mrf: tag policy: add support for processing follow requests
authorWilliam Pitcock <nenolod@dereferenced.org>
Mon, 4 Feb 2019 17:03:34 +0000 (17:03 +0000)
committerWilliam Pitcock <nenolod@dereferenced.org>
Mon, 4 Feb 2019 17:04:05 +0000 (17:04 +0000)
lib/pleroma/web/activity_pub/mrf/tag_policy.ex

index e05663371a380525a37e010a220cfd39d30b9310..2af36616fbde389211a1274634066b3c4b57d7d4 100644 (file)
@@ -88,7 +88,20 @@ defmodule Pleroma.Web.ActivityPub.MRF.TagPolicy do
   defp process_tag(_, message), do: {:ok, message}
 
   @impl true
-  def filter(%{"actor" => actor} = message) do
+  def filter(%{"object" => target_actor, "type" => "Follow"} = message) do
+    User.get_cached_by_ap_id(target_actor)
+    |> get_tags()
+    |> Enum.reduce({:ok, message}, fn
+      tag, {:ok, message} ->
+        process_tag(tag, message)
+
+      _, error ->
+        error
+    end)
+  end
+
+  @impl true
+  def filter(%{"actor" => actor, "type" => "Create"} = message) do
     User.get_cached_by_ap_id(actor)
     |> get_tags()
     |> Enum.reduce({:ok, message}, fn
@@ -99,4 +112,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.TagPolicy do
         error
     end)
   end
+
+  @impl true
+  def filter(message), do: {:ok, message}
 end