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.Web.MastodonAPI.InstanceView
7 alias Pleroma.Web.Nodeinfo.Nodeinfo
8 alias Pleroma.Web.Preload.Providers.Provider
11 @instance_url :"/api/v1/instance"
12 @panel_url :"/instance/panel.html"
13 @nodeinfo_url :"/nodeinfo/2.0"
16 def generate_terms(_params) do
20 |> build_nodeinfo_tag()
23 defp build_info_tag(acc) do
24 info_data = InstanceView.render("show.json", %{})
26 Map.put(acc, @instance_url, info_data)
29 defp build_panel_tag(acc) do
30 instance_path = Path.join(:code.priv_dir(:pleroma), "static/instance/panel.html")
32 if File.exists?(instance_path) do
33 panel_data = File.read!(instance_path)
34 Map.put(acc, @panel_url, panel_data)
40 defp build_nodeinfo_tag(acc) do
41 case Nodeinfo.get_nodeinfo("2.0") do
46 Map.put(acc, @nodeinfo_url, nodeinfo_data)