diff options
Diffstat (limited to 'lib/pleroma/web/controller')
-rw-r--r-- | lib/pleroma/web/controller/frontend_controller.ex | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/pleroma/web/controller/frontend_controller.ex b/lib/pleroma/web/controller/frontend_controller.ex index fc717fa29..5fa4e6391 100644 --- a/lib/pleroma/web/controller/frontend_controller.ex +++ b/lib/pleroma/web/controller/frontend_controller.ex @@ -4,6 +4,7 @@ defmodule Pleroma.Web.FrontendController do defmacro __using__(_opts) do quote do require Logger + alias Pleroma.User def fallback(conn, _params) do conn @@ -11,6 +12,30 @@ defmodule Pleroma.Web.FrontendController do |> text("Not found") end + def registration_page(conn, params) do + redirector(conn, params) + end + + def api_not_implemented(conn, _params) do + conn + |> put_status(404) + |> json(%{error: "Not implemented"}) + end + + def empty(conn, _params) do + conn + |> put_status(204) + |> text("") + end + + def redirector(conn, _params) do + {:ok, path} = Pleroma.Frontend.file_path("index.html") + + conn + |> put_resp_content_type("text/html") + |> send_file(conn.status || 200, path) + end + def redirector_with_preload(conn, %{"path" => ["pleroma", "admin"]}) do redirect(conn, to: "/pleroma/admin/") end @@ -19,6 +44,19 @@ defmodule Pleroma.Web.FrontendController do index_with_generated_data(conn, params, [:preload]) end + def redirector_with_meta(conn, %{"maybe_nickname_or_id" => maybe_nickname_or_id} = params) do + with %User{} = user <- User.get_cached_by_nickname_or_id(maybe_nickname_or_id) do + redirector_with_meta(conn, %{user: user}) + else + nil -> + redirector(conn, params) + end + end + + def redirector_with_meta(conn, params) do + index_with_generated_data(conn, params, [:metadata, :preload]) + end + def index_with_generated_data(conn, params, generators) do {:ok, path} = Pleroma.Frontend.file_path("index.html") {:ok, index_content} = File.read(path) |