formatting
[akkoma] / lib / pleroma / web / activity_pub / mrf / reject_non_public.ex
1 defmodule Pleroma.Web.ActivityPub.MRF.RejectNonPublic do
2 alias Pleroma.User
3 @behaviour Pleroma.Web.ActivityPub.MRF
4
5 def filter(object) do
6 if object["type"] == "Create" do
7 user = User.get_by_ap_id(object["actor"])
8 public = "https://www.w3.org/ns/activitystreams#Public"
9
10 #Determine visibility
11 visibility =
12 cond do
13 #Public
14 public in object["to"] -> "p"
15 #Unlisted
16 public in object["cc"] -> "u"
17 #Followers-only
18 user.follower_address in object["to"] -> "f"
19 #Direct
20 true -> "d"
21 end
22
23 {flag, object_out} =
24 case visibility do
25 "p" -> {:ok, object}
26 "u" -> {:ok, object}
27 _ -> {:reject, nil}
28 end
29
30 {flag, object_out}
31 else
32 {:ok, object}
33 end
34 end
35 end