Merge branch 'hotfix/leaking-lists' into 'develop'
[akkoma] / lib / pleroma / web / activity_pub / mrf.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.ActivityPub.MRF do
6 @callback filter(Map.t()) :: {:ok | :reject, Map.t()}
7
8 def filter(object) do
9 get_policies()
10 |> Enum.reduce({:ok, object}, fn
11 policy, {:ok, object} ->
12 policy.filter(object)
13
14 _, error ->
15 error
16 end)
17 end
18
19 def get_policies do
20 Pleroma.Config.get([:instance, :rewrite_policy], []) |> get_policies()
21 end
22
23 defp get_policies(policy) when is_atom(policy), do: [policy]
24 defp get_policies(policies) when is_list(policies), do: policies
25 defp get_policies(_), do: []
26 end