4f83e94140ec39bc352ea55a494d468cd0e2ce02
[akkoma] / lib / pleroma / plugs / plug_helper.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Plugs.PlugHelper do
6 @moduledoc "Pleroma Plug helper"
7
8 def append_to_called_plugs(conn, plug_module) do
9 append_to_private_list(conn, :called_plugs, plug_module)
10 end
11
12 def append_to_skipped_plugs(conn, plug_module) do
13 append_to_private_list(conn, :skipped_plugs, plug_module)
14 end
15
16 def plug_called?(conn, plug_module) do
17 contained_in_private_list?(conn, :called_plugs, plug_module)
18 end
19
20 def plug_skipped?(conn, plug_module) do
21 contained_in_private_list?(conn, :skipped_plugs, plug_module)
22 end
23
24 def plug_called_or_skipped?(conn, plug_module) do
25 plug_called?(conn, plug_module) || plug_skipped?(conn, plug_module)
26 end
27
28 defp append_to_private_list(conn, private_variable, value) do
29 list = conn.private[private_variable] || []
30 modified_list = Enum.uniq(list ++ [value])
31 Plug.Conn.put_private(conn, private_variable, modified_list)
32 end
33
34 defp contained_in_private_list?(conn, private_variable, value) do
35 list = conn.private[private_variable] || []
36 value in list
37 end
38 end