Refactor User.post_register_action/1 emails
[akkoma] / lib / pleroma / web / preload / instance.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.Web.Preload.Providers.Instance do
6 alias Pleroma.Plugs.InstanceStatic
7 alias Pleroma.Web.MastodonAPI.InstanceView
8 alias Pleroma.Web.Nodeinfo.Nodeinfo
9 alias Pleroma.Web.Preload.Providers.Provider
10
11 @behaviour Provider
12 @instance_url "/api/v1/instance"
13 @panel_url "/instance/panel.html"
14 @nodeinfo_url "/nodeinfo/2.0.json"
15
16 @impl Provider
17 def generate_terms(_params) do
18 %{}
19 |> build_info_tag()
20 |> build_panel_tag()
21 |> build_nodeinfo_tag()
22 end
23
24 defp build_info_tag(acc) do
25 info_data = InstanceView.render("show.json", %{})
26
27 Map.put(acc, @instance_url, info_data)
28 end
29
30 defp build_panel_tag(acc) do
31 instance_path = InstanceStatic.file_path(@panel_url |> to_string())
32
33 if File.exists?(instance_path) do
34 panel_data = File.read!(instance_path)
35 Map.put(acc, @panel_url, panel_data)
36 else
37 acc
38 end
39 end
40
41 defp build_nodeinfo_tag(acc) do
42 case Nodeinfo.get_nodeinfo("2.0") do
43 {:error, _} ->
44 acc
45
46 nodeinfo_data ->
47 Map.put(acc, @nodeinfo_url, nodeinfo_data)
48 end
49 end
50 end