logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git

instance.ex (1533B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.Web.Preload.Providers.Instance do
  5. alias Pleroma.Web.MastodonAPI.InstanceView
  6. alias Pleroma.Web.Nodeinfo.Nodeinfo
  7. alias Pleroma.Web.Plugs.InstanceStatic
  8. alias Pleroma.Web.Preload.Providers.Provider
  9. alias Pleroma.Web.TwitterAPI.UtilView
  10. @behaviour Provider
  11. @instance_url "/api/v1/instance"
  12. @panel_url "/instance/panel.html"
  13. @nodeinfo_url "/nodeinfo/2.0.json"
  14. @fe_config_url "/api/pleroma/frontend_configurations"
  15. @impl Provider
  16. def generate_terms(_params) do
  17. %{}
  18. |> build_info_tag()
  19. |> build_panel_tag()
  20. |> build_nodeinfo_tag()
  21. |> build_fe_config_tag()
  22. end
  23. defp build_info_tag(acc) do
  24. info_data = InstanceView.render("show.json", %{})
  25. Map.put(acc, @instance_url, info_data)
  26. end
  27. defp build_panel_tag(acc) do
  28. instance_path = InstanceStatic.file_path(@panel_url |> to_string())
  29. if File.exists?(instance_path) do
  30. panel_data = File.read!(instance_path)
  31. Map.put(acc, @panel_url, panel_data)
  32. else
  33. acc
  34. end
  35. end
  36. defp build_nodeinfo_tag(acc) do
  37. case Nodeinfo.get_nodeinfo("2.0") do
  38. {:error, _} ->
  39. acc
  40. nodeinfo_data ->
  41. Map.put(acc, @nodeinfo_url, nodeinfo_data)
  42. end
  43. end
  44. defp build_fe_config_tag(acc) do
  45. fe_data = UtilView.render("frontend_configurations.json", %{})
  46. Map.put(acc, @fe_config_url, fe_data)
  47. end
  48. end