Chain policies
- The `:pleroma, :instance, :rewrite_policy` can now be either a policy or a list of policies - Made a behaviour for MRF policies
This commit is contained in:
parent
ffe028cd73
commit
e9e6f37bda
5 changed files with 30 additions and 3 deletions
21
lib/pleroma/web/activity_pub/mrf.ex
Normal file
21
lib/pleroma/web/activity_pub/mrf.ex
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
defmodule Pleroma.Web.ActivityPub.MRF do
|
||||
|
||||
@callback filter(Map.t) :: {:ok | :reject, Map.t}
|
||||
|
||||
def filter(object) do
|
||||
get_policies()
|
||||
|> Enum.reduce({:ok, object}, fn
|
||||
(policy, {:ok, object}) ->
|
||||
policy.filter(object)
|
||||
(_, error) -> error
|
||||
end)
|
||||
end
|
||||
|
||||
def get_policies() do
|
||||
Application.get_env(:pleroma, :instance, [])
|
||||
|> Keyword.get(:rewrite_policy, [])
|
||||
|> get_policies()
|
||||
end
|
||||
def get_policies(policy) when is_atom(policy), do: [policy]
|
||||
def get_policies(policies) when is_list(policies), do: policies
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue