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