1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
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
12 @instance_url "/api/v1/instance"
13 @panel_url "/instance/panel.html"
14 @nodeinfo_url "/nodeinfo/2.0.json"
17 def generate_terms(_params) do
21 |> build_nodeinfo_tag()
24 defp build_info_tag(acc) do
25 info_data = InstanceView.render("show.json", %{})
27 Map.put(acc, @instance_url, info_data)
30 defp build_panel_tag(acc) do
31 instance_path = InstanceStatic.file_path(@panel_url |> to_string())
33 if File.exists?(instance_path) do
34 panel_data = File.read!(instance_path)
35 Map.put(acc, @panel_url, panel_data)
41 defp build_nodeinfo_tag(acc) do
42 case Nodeinfo.get_nodeinfo("2.0") do
47 Map.put(acc, @nodeinfo_url, nodeinfo_data)