logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma

instance.ex (1252B)


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