Chain policies
[akkoma] / lib / pleroma / web / activity_pub / mrf.ex
1 defmodule Pleroma.Web.ActivityPub.MRF do
2
3 @callback filter(Map.t) :: {:ok | :reject, Map.t}
4
5 def filter(object) do
6 get_policies()
7 |> Enum.reduce({:ok, object}, fn
8 (policy, {:ok, object}) ->
9 policy.filter(object)
10 (_, error) -> error
11 end)
12 end
13
14 def get_policies() do
15 Application.get_env(:pleroma, :instance, [])
16 |> Keyword.get(:rewrite_policy, [])
17 |> get_policies()
18 end
19 def get_policies(policy) when is_atom(policy), do: [policy]
20 def get_policies(policies) when is_list(policies), do: policies
21 end