Mastodon Conversation API: Don't return own account in 'accounts'.
[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 Application.get_env(:pleroma, :instance, [])
21 |> Keyword.get(:rewrite_policy, [])
22 |> get_policies()
23 end
24
25 defp get_policies(policy) when is_atom(policy), do: [policy]
26 defp get_policies(policies) when is_list(policies), do: policies
27 defp get_policies(_), do: []
28 end