mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2024-06-01 00:18:07 +00:00
Introduce Pleroma.Config.url/0 to bypass compile-time deps on Endpoint
This commit is contained in:
parent
bed10ab2c7
commit
d369142a8e
|
@ -103,4 +103,25 @@ defmodule Pleroma.Config do
|
|||
def feature_enabled?(feature_name) do
|
||||
get([:features, feature_name]) not in [nil, false, :disabled, :auto]
|
||||
end
|
||||
|
||||
@doc """
|
||||
Get the URI directly from application config, bypassing the Endpoint module.
|
||||
"""
|
||||
def uri do
|
||||
# `Pleroma.Web.Endpoint` is only being used as a key here (for equality check),
|
||||
# so it's okay to use `Module.concat/1` to have the compiler ignore it.
|
||||
endpoint_key = Module.concat(["Pleroma.Web.Endpoint"])
|
||||
|
||||
url =
|
||||
get([endpoint_key, :url])
|
||||
|> Map.new()
|
||||
|
||||
struct(URI, url)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Similar to `Pleroma.Web.Endpoint.url/0`.
|
||||
May be used where needed to avoid a compile-time dep on Endpoint.
|
||||
"""
|
||||
def url, do: URI.to_string(uri())
|
||||
end
|
||||
|
|
|
@ -6,7 +6,7 @@ defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.ContextID do
|
|||
use Ecto.Type
|
||||
|
||||
alias Ecto.UUID
|
||||
alias Pleroma.Web.Endpoint
|
||||
alias Pleroma.Config
|
||||
|
||||
def type, do: :string
|
||||
|
||||
|
@ -19,6 +19,6 @@ defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.ContextID do
|
|||
def load(data), do: {:ok, data}
|
||||
|
||||
def autogenerate do
|
||||
"#{Endpoint.url()}/contexts/#{UUID.generate()}"
|
||||
"#{Config.url()}/contexts/#{UUID.generate()}"
|
||||
end
|
||||
end
|
||||
|
|
|
@ -136,4 +136,26 @@ 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
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue