aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/controllers/frontend/pleroma_controller.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pleroma/web/controllers/frontend/pleroma_controller.ex')
-rw-r--r--lib/pleroma/web/controllers/frontend/pleroma_controller.ex44
1 files changed, 44 insertions, 0 deletions
diff --git a/lib/pleroma/web/controllers/frontend/pleroma_controller.ex b/lib/pleroma/web/controllers/frontend/pleroma_controller.ex
new file mode 100644
index 000000000..1085d05bf
--- /dev/null
+++ b/lib/pleroma/web/controllers/frontend/pleroma_controller.ex
@@ -0,0 +1,44 @@
+defmodule Pleroma.Web.Frontend.PleromaController do
+ use Pleroma.Web, :controller
+ use Pleroma.Web.Frontend.DefaultController
+
+ require Logger
+
+ alias Pleroma.User
+ alias Pleroma.Web.Metadata
+
+ def index_with_meta(conn, %{"maybe_nickname_or_id" => maybe_nickname_or_id} = params) do
+ case User.get_cached_by_nickname_or_id(maybe_nickname_or_id) do
+ %User{} = user ->
+ index_with_meta(conn, %{user: user})
+
+ _ ->
+ index(conn, params)
+ end
+ end
+
+ # not intended to be matched from router, but can be called from the app internally
+ def index_with_meta(conn, params) do
+ {:ok, path} = index_file_path()
+ {:ok, index_content} = File.read(path)
+
+ tags =
+ try do
+ Metadata.build_tags(params)
+ rescue
+ e ->
+ Logger.error(
+ "Metadata rendering for #{conn.request_path} failed.\n" <>
+ Exception.format(:error, e, __STACKTRACE__)
+ )
+
+ ""
+ end
+
+ response = String.replace(index_content, "<!--server-generated-meta-->", tags)
+
+ html(conn, response)
+ end
+
+ defdelegate registration_page(conn, params), to: __MODULE__, as: :index
+end