aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/preload/instance.ex
diff options
context:
space:
mode:
authorfeld <feld@feld.me>2020-06-25 21:35:39 +0000
committerfeld <feld@feld.me>2020-06-25 21:35:39 +0000
commit828841968640f67a06ba8e2d0dd7c38b1d9e3729 (patch)
treeeda3efbd610908ab51d78cc82dbf6c9ae5000911 /lib/pleroma/web/preload/instance.ex
parent2e39fbe02ed31695abcf36e4b9aadcedde3d4a9e (diff)
parentfaba1a6e337715af557e2e222e62de6fd35c9e8a (diff)
downloadpleroma-828841968640f67a06ba8e2d0dd7c38b1d9e3729.tar.gz
Merge branch 'preload-data' into 'develop'
Preload data into index.html Closes #1660 See merge request pleroma/pleroma!2381
Diffstat (limited to 'lib/pleroma/web/preload/instance.ex')
-rw-r--r--lib/pleroma/web/preload/instance.ex49
1 files changed, 49 insertions, 0 deletions
diff --git a/lib/pleroma/web/preload/instance.ex b/lib/pleroma/web/preload/instance.ex
new file mode 100644
index 000000000..0b6fd3313
--- /dev/null
+++ b/lib/pleroma/web/preload/instance.ex
@@ -0,0 +1,49 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.Preload.Providers.Instance do
+ alias Pleroma.Web.MastodonAPI.InstanceView
+ alias Pleroma.Web.Nodeinfo.Nodeinfo
+ alias Pleroma.Web.Preload.Providers.Provider
+
+ @behaviour Provider
+ @instance_url :"/api/v1/instance"
+ @panel_url :"/instance/panel.html"
+ @nodeinfo_url :"/nodeinfo/2.0"
+
+ @impl Provider
+ def generate_terms(_params) do
+ %{}
+ |> build_info_tag()
+ |> build_panel_tag()
+ |> build_nodeinfo_tag()
+ end
+
+ defp build_info_tag(acc) do
+ info_data = InstanceView.render("show.json", %{})
+
+ Map.put(acc, @instance_url, info_data)
+ end
+
+ defp build_panel_tag(acc) do
+ instance_path = Path.join(:code.priv_dir(:pleroma), "static/instance/panel.html")
+
+ if File.exists?(instance_path) do
+ panel_data = File.read!(instance_path)
+ Map.put(acc, @panel_url, panel_data)
+ else
+ acc
+ end
+ end
+
+ defp build_nodeinfo_tag(acc) do
+ case Nodeinfo.get_nodeinfo("2.0") do
+ {:error, _} ->
+ acc
+
+ nodeinfo_data ->
+ Map.put(acc, @nodeinfo_url, nodeinfo_data)
+ end
+ end
+end