diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/config.ex | 21 | ||||
-rw-r--r-- | lib/pleroma/ecto_type/activity_pub/object_validators/context_id.ex | 4 |
2 files changed, 23 insertions, 2 deletions
diff --git a/lib/pleroma/config.ex b/lib/pleroma/config.ex index 54e332595..2709f39bf 100644 --- a/lib/pleroma/config.ex +++ b/lib/pleroma/config.ex @@ -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 diff --git a/lib/pleroma/ecto_type/activity_pub/object_validators/context_id.ex b/lib/pleroma/ecto_type/activity_pub/object_validators/context_id.ex index 15f47d45f..880749266 100644 --- a/lib/pleroma/ecto_type/activity_pub/object_validators/context_id.ex +++ b/lib/pleroma/ecto_type/activity_pub/object_validators/context_id.ex @@ -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 |