Chain policies
[akkoma] / lib / pleroma / web / web.ex
1 defmodule Pleroma.Web do
2 @moduledoc """
3 A module that keeps using definitions for controllers,
4 views and so on.
5
6 This can be used in your application as:
7
8 use Pleroma.Web, :controller
9 use Pleroma.Web, :view
10
11 The definitions below will be executed for every view,
12 controller, etc, so keep them short and clean, focused
13 on imports, uses and aliases.
14
15 Do NOT define functions inside the quoted expressions
16 below.
17 """
18
19 def controller do
20 quote do
21 use Phoenix.Controller, namespace: Pleroma.Web
22 import Plug.Conn
23 import Pleroma.Web.{Gettext, Router.Helpers}
24 end
25 end
26
27 def view do
28 quote do
29 use Phoenix.View,
30 root: "lib/pleroma/web/templates",
31 namespace: Pleroma.Web
32
33 # Import convenience functions from controllers
34 import Phoenix.Controller, only: [get_csrf_token: 0, get_flash: 2, view_module: 1]
35
36 import Pleroma.Web.{ErrorHelpers, Gettext, Router.Helpers}
37 end
38 end
39
40 def router do
41 quote do
42 use Phoenix.Router
43 import Plug.Conn
44 import Phoenix.Controller
45 end
46 end
47
48 def channel do
49 quote do
50 use Phoenix.Channel
51 import Pleroma.Web.Gettext
52 end
53 end
54
55 @doc """
56 When used, dispatch to the appropriate controller/view/etc.
57 """
58 defmacro __using__(which) when is_atom(which) do
59 apply(__MODULE__, which, [])
60 end
61
62 def base_url do
63 Pleroma.Web.Endpoint.url()
64 end
65 end