diff options
author | Roman Chvanikov <chvanikoff@pm.me> | 2020-07-11 00:03:54 +0300 |
---|---|---|
committer | Roman Chvanikov <chvanikoff@pm.me> | 2020-07-11 00:03:54 +0300 |
commit | 1f1ccdc6e5c0c1d09904f3f0fe454d1432da7131 (patch) | |
tree | 467f0ad253b44007cdaa3dc304b5319ca1282b96 /lib | |
parent | bb693768ff6f6afcb0b888b5a39100c6ff41f6bf (diff) | |
download | pleroma-1f1ccdc6e5c0c1d09904f3f0fe454d1432da7131.tar.gz |
Partially fix tests
Diffstat (limited to 'lib')
8 files changed, 68 insertions, 62 deletions
diff --git a/lib/pleroma/web/controllers/frontend/default_controller.ex b/lib/pleroma/web/controllers/frontend/default_controller.ex index fef748a19..fe37b2cdb 100644 --- a/lib/pleroma/web/controllers/frontend/default_controller.ex +++ b/lib/pleroma/web/controllers/frontend/default_controller.ex @@ -7,6 +7,8 @@ defmodule Pleroma.Web.Frontend.DefaultController do quote do import Pleroma.Frontend, only: [fe_file_path: 1, fe_file_path: 2] + require Logger + def index(conn, _params) do status = conn.status || 200 @@ -17,6 +19,40 @@ defmodule Pleroma.Web.Frontend.DefaultController do |> send_file(status, index_file_path) end + def index_with_meta(conn, params) do + {:ok, path} = fe_file_path("index.html") + {:ok, index_content} = File.read(path) + + tags = + try do + Pleroma.Web.Metadata.build_tags(params) + rescue + e -> + Logger.error( + "Metadata rendering for #{conn.request_path} failed.\n" <> + Exception.format(:error, e, __STACKTRACE__) + ) + + "" + end + + preloads = preload_data(conn, params) + + response = String.replace(index_content, "<!--server-generated-meta-->", tags <> preloads) + + html(conn, response) + end + + def index_with_preload(conn, params) do + {:ok, path} = fe_file_path("index.html") + {:ok, index_content} = File.read(path) + preloads = preload_data(conn, params) + + response = String.replace(index_content, "<!--server-generated-meta-->", preloads) + + html(conn, response) + end + def api_not_implemented(conn, _params) do conn |> put_status(404) @@ -35,7 +71,26 @@ defmodule Pleroma.Web.Frontend.DefaultController do |> text("Not found") end - defoverridable index: 2, api_not_implemented: 2, empty: 2, fallback: 2 + defp preload_data(conn, params) do + try do + Pleroma.Web.Preload.build_tags(conn, params) + rescue + e -> + Logger.error( + "Preloading for #{conn.request_path} failed.\n" <> + Exception.format(:error, e, __STACKTRACE__) + ) + + "" + end + end + + defoverridable index: 2, + index_with_meta: 2, + index_with_preload: 2, + api_not_implemented: 2, + empty: 2, + fallback: 2 end end end diff --git a/lib/pleroma/web/controllers/frontend/headless_controller.ex b/lib/pleroma/web/controllers/frontend/headless_controller.ex index 7d9bbd443..781811a66 100644 --- a/lib/pleroma/web/controllers/frontend/headless_controller.ex +++ b/lib/pleroma/web/controllers/frontend/headless_controller.ex @@ -5,7 +5,7 @@ defmodule Pleroma.Web.Frontend.HeadlessController do use Pleroma.Web, :controller - def index(conn, _params) do + def index_with_preload(conn, _params) do conn |> put_status(404) |> text("") diff --git a/lib/pleroma/web/controllers/frontend/mastodon_controller.ex b/lib/pleroma/web/controllers/frontend/mastodon_controller.ex index 996651128..224f19d92 100644 --- a/lib/pleroma/web/controllers/frontend/mastodon_controller.ex +++ b/lib/pleroma/web/controllers/frontend/mastodon_controller.ex @@ -4,6 +4,7 @@ defmodule Pleroma.Web.Frontend.MastodonController do use Pleroma.Web, :controller + use Pleroma.Web.Frontend.DefaultController alias Pleroma.Plugs.OAuthScopesPlug alias Pleroma.User @@ -17,7 +18,10 @@ defmodule Pleroma.Web.Frontend.MastodonController do when action == :index ) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug when action != :index) + plug( + Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug + when action != :index + ) def index(%{assigns: %{user: user, token: token}} = conn, _params) when not is_nil(user) and not is_nil(token) do diff --git a/lib/pleroma/web/controllers/frontend/pleroma_controller.ex b/lib/pleroma/web/controllers/frontend/pleroma_controller.ex index 2c48aeaba..f9b3a99c9 100644 --- a/lib/pleroma/web/controllers/frontend/pleroma_controller.ex +++ b/lib/pleroma/web/controllers/frontend/pleroma_controller.ex @@ -6,13 +6,9 @@ defmodule Pleroma.Web.Frontend.PleromaController do use Pleroma.Web, :controller use Pleroma.Web.Frontend.DefaultController - require Logger - alias Pleroma.User - alias Pleroma.Web.Metadata - alias Pleroma.Web.Preload - def index_with_meta(conn, %{"maybe_nickname_or_id" => maybe_nickname_or_id} = params) do + def index_with_meta_and_user(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}) @@ -22,54 +18,5 @@ defmodule Pleroma.Web.Frontend.PleromaController do 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} = fe_file_path("index.html") - {: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 - - preloads = preload_data(conn, params) - - response = String.replace(index_content, "<!--server-generated-meta-->", tags <> preloads) - - html(conn, response) - end - - def index_with_preload(conn, params) do - {:ok, path} = fe_file_path("index.html") - {:ok, index_content} = File.read(path) - preloads = preload_data(conn, params) - - response = String.replace(index_content, "<!--server-generated-meta-->", preloads) - - html(conn, response) - end - - defdelegate registration_page(conn, params), to: __MODULE__, as: :index - - defp preload_data(conn, params) do - try do - Preload.build_tags(conn, params) - rescue - e -> - Logger.error( - "Preloading for #{conn.request_path} failed.\n" <> - Exception.format(:error, e, __STACKTRACE__) - ) - - "" - end - end + defdelegate registration_page(conn, params), to: __MODULE__, as: :index_with_preload end diff --git a/lib/pleroma/web/feed/user_controller.ex b/lib/pleroma/web/feed/user_controller.ex index 8a7e94b94..ed4f17523 100644 --- a/lib/pleroma/web/feed/user_controller.ex +++ b/lib/pleroma/web/feed/user_controller.ex @@ -20,7 +20,7 @@ defmodule Pleroma.Web.Feed.UserController do with {_, %User{} = user} <- {:fetch_user, User.get_cached_by_nickname_or_id(nickname)} do conn |> Map.put(:params, %{user: user}) - |> Pleroma.Web.FrontendController.call(:index_with_meta) + |> Pleroma.Web.FrontendController.call(:index_with_meta_and_user) end end diff --git a/lib/pleroma/web/ostatus/ostatus_controller.ex b/lib/pleroma/web/ostatus/ostatus_controller.ex index 08bb47aa8..e01c9434a 100644 --- a/lib/pleroma/web/ostatus/ostatus_controller.ex +++ b/lib/pleroma/web/ostatus/ostatus_controller.ex @@ -97,7 +97,7 @@ defmodule Pleroma.Web.OStatus.OStatusController do conn |> Map.put(:params, params) - |> Pleroma.Web.FrontendController.call(:index_with_meta) + |> Pleroma.Web.FrontendController.call(:index_with_meta_and_user) true -> Pleroma.Web.FrontendController.call(conn, :index) diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 42b3bd864..639581784 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -719,7 +719,7 @@ defmodule Pleroma.Web.Router do scope "/", Pleroma.Web do get("/registration/:token", FrontendController, :registration_page) - get("/:maybe_nickname_or_id", FrontendController, :index_with_meta) + get("/:maybe_nickname_or_id", FrontendController, :index_with_meta_and_user) get("/api*path", FrontendController, :api_not_implemented) get("/*path", FrontendController, :index_with_preload) diff --git a/lib/pleroma/web/views/frontend/mastodon_view.ex b/lib/pleroma/web/views/frontend/mastodon_view.ex index 6428df601..3db8a934e 100644 --- a/lib/pleroma/web/views/frontend/mastodon_view.ex +++ b/lib/pleroma/web/views/frontend/mastodon_view.ex @@ -86,7 +86,7 @@ defmodule Pleroma.Web.Frontend.MastodonView do "video\/mp4" ] }, - settings: user.settings || @default_settings, + settings: Map.get(user, :settings, @default_settings), push_subscription: nil, accounts: %{user.id => render(AccountView, "show.json", user: user, for: user)}, custom_emojis: render(CustomEmojiView, "index.json", custom_emojis: custom_emojis), |