+ mrf_user_allowlist =
+ Config.get([:mrf_user_allowlist], [])
+ |> Enum.into(%{}, fn {k, v} -> {k, length(v)} end)
+
+ federation_response =
+ if Config.get([:instance, :mrf_transparency]) do
+ %{
+ mrf_policies: mrf_policies,
+ mrf_simple: mrf_simple,
+ mrf_keyword: mrf_keyword,
+ mrf_user_allowlist: mrf_user_allowlist,
+ quarantined_instances: quarantined
+ }
+ else
+ %{}
+ end
+
+ features =
+ [
+ "pleroma_api",
+ "mastodon_api",
+ "mastodon_api_streaming",
+ "polls",
+ "pleroma_explicit_addressing",
+ if Config.get([:media_proxy, :enabled]) do
+ "media_proxy"
+ end,
+ if Config.get([:gopher, :enabled]) do
+ "gopher"
+ end,
+ if Config.get([:chat, :enabled]) do
+ "chat"
+ end,
+ if Config.get([:suggestions, :enabled]) do
+ "suggestions"
+ end,
+ if Config.get([:instance, :allow_relay]) do
+ "relay"
+ end,
+ if Config.get([:instance, :safe_dm_mentions]) do
+ "safe_dm_mentions"
+ end
+ ]
+ |> Enum.filter(& &1)
+
+ %{