summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Gleason <alex@alexgleason.me>2021-06-01 15:11:33 -0500
committerAlex Gleason <alex@alexgleason.me>2021-06-01 15:51:46 -0500
commiteb8c2de586937128777421bb8c3d2fca37ca331d (patch)
tree0a4879cf97fd5127ad294830eebcb3fbb8cf90f2
parent41018ab77d8ecf11336226cdb2d25b4772eceed6 (diff)
Introduce Pleroma.Config.url/0
This function may be used to reduce compile-time cycles where it matters
-rw-r--r--lib/pleroma/config.ex10
-rw-r--r--lib/pleroma/user.ex9
-rw-r--r--lib/pleroma/web/views/email_view.ex2
-rw-r--r--test/pleroma/config_test.exs27
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