Merge branch 'develop' into refactor/gun-pool-registry
[akkoma] / lib / pleroma / plugs / federating_plug.ex
index 4108d90af267631dbdcedf805396941888bc7430..09038f3c6142f87b4e6c0e5174418bc20bdba6e2 100644 (file)
@@ -1,3 +1,7 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
 defmodule Pleroma.Web.FederatingPlug do
   import Plug.Conn
 
@@ -5,14 +9,24 @@ defmodule Pleroma.Web.FederatingPlug do
     options
   end
 
-  def call(conn, opts) do
-    if Keyword.get(Application.get_env(:pleroma, :instance), :federating) do
+  def call(conn, _opts) do
+    if federating?() do
       conn
     else
-      conn
-      |> put_status(404)
-      |> Phoenix.Controller.render(Pleroma.Web.ErrorView, "404.json")
-      |> halt()
+      fail(conn)
     end
   end
+
+  def federating?, do: Pleroma.Config.get([:instance, :federating])
+
+  # Definition for the use in :if_func / :unless_func plug options
+  def federating?(_conn), do: federating?()
+
+  defp fail(conn) do
+    conn
+    |> put_status(404)
+    |> Phoenix.Controller.put_view(Pleroma.Web.ErrorView)
+    |> Phoenix.Controller.render("404.json")
+    |> halt()
+  end
 end