From eb8c2de586937128777421bb8c3d2fca37ca331d Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 1 Jun 2021 15:11:33 -0500 Subject: Introduce Pleroma.Config.url/0 This function may be used to reduce compile-time cycles where it matters --- lib/pleroma/config.ex | 10 ++++++++++ lib/pleroma/user.ex | 9 ++++----- lib/pleroma/web/views/email_view.ex | 2 +- test/pleroma/config_test.exs | 27 +++++++++++++++++++++++++++ 4 files changed, 42 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/config.ex b/lib/pleroma/config.ex index 2e15a3719..34ed2be5e 100644 --- a/lib/pleroma/config.ex +++ b/lib/pleroma/config.ex @@ -99,4 +99,14 @@ defmodule Pleroma.Config do def oauth_consumer_strategies, do: get([:auth, :oauth_consumer_strategies], []) def oauth_consumer_enabled?, do: oauth_consumer_strategies() != [] + + def uri do + key = Module.concat(["Pleroma.Web.Endpoint"]) + url = get([key, :url]) |> Map.new() + struct(URI, url) + end + + def url, do: URI.to_string(uri()) + + def host, do: uri().host end diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 4c697cb1b..ed62da21d 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -33,7 +33,6 @@ defmodule Pleroma.User do alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.CommonAPI alias Pleroma.Web.CommonAPI.Utils, as: CommonUtils - alias Pleroma.Web.Endpoint alias Pleroma.Web.OAuth alias Pleroma.Web.RelMe alias Pleroma.Workers.BackgroundWorker @@ -359,7 +358,7 @@ defmodule Pleroma.User do _ -> unless options[:no_default] do - Config.get([:assets, :default_user_avatar], "#{Endpoint.url()}/images/avi.png") + Config.get([:assets, :default_user_avatar], "#{Config.url()}/images/avi.png") end end end @@ -367,12 +366,12 @@ defmodule Pleroma.User do def banner_url(user, options \\ []) do case user.banner do %{"url" => [%{"href" => href} | _]} -> href - _ -> !options[:no_default] && "#{Endpoint.url()}/images/banner.png" + _ -> !options[:no_default] && "#{Config.url()}/images/banner.png" end end # Should probably be renamed or removed - def ap_id(%User{nickname: nickname}), do: "#{Endpoint.url()}/users/#{nickname}" + def ap_id(%User{nickname: nickname}), do: "#{Config.url()}/users/#{nickname}" def ap_followers(%User{follower_address: fa}) when is_binary(fa), do: fa def ap_followers(%User{} = user), do: "#{ap_id(user)}/followers" @@ -1162,7 +1161,7 @@ defmodule Pleroma.User do @spec get_by_nickname(String.t()) :: User.t() | nil def get_by_nickname(nickname) do Repo.get_by(User, nickname: nickname) || - if Regex.match?(~r(@#{Pleroma.Web.Endpoint.host()})i, nickname) do + if Regex.match?(~r(@#{Config.host()})i, nickname) do Repo.get_by(User, nickname: local_nickname(nickname)) end end diff --git a/lib/pleroma/web/views/email_view.ex b/lib/pleroma/web/views/email_view.ex index f7659b994..84c37e1b2 100644 --- a/lib/pleroma/web/views/email_view.ex +++ b/lib/pleroma/web/views/email_view.ex @@ -18,6 +18,6 @@ defmodule Pleroma.Web.EmailView do end def admin_user_url(%{id: id}) do - Pleroma.Web.Endpoint.url() <> "/pleroma/admin/#/users/" <> id + Pleroma.Config.url() <> "/pleroma/admin/#/users/" <> id end end diff --git a/test/pleroma/config_test.exs b/test/pleroma/config_test.exs index 3158a2ec8..0ae4db82d 100644 --- a/test/pleroma/config_test.exs +++ b/test/pleroma/config_test.exs @@ -136,4 +136,31 @@ defmodule Pleroma.ConfigTest do Pleroma.Config.delete([:lorem]) Pleroma.Config.delete([:ipsum]) end + + describe "URI functions" do + setup do + url = [host: "lain.com", scheme: "https", port: 443] + clear_config([Pleroma.Web.Endpoint, :url], url) + end + + test "uri/0" do + expected = %URI{ + scheme: "https", + host: "lain.com", + port: 443 + } + + assert Pleroma.Config.uri() == expected + end + + test "url/0" do + expected = "https://lain.com" + assert Pleroma.Config.url() == expected + end + + test "host/0" do + expected = "lain.com" + assert Pleroma.Config.host() == expected + end + end end -- cgit v1.2.3