26 lines
609 B
Elixir
26 lines
609 B
Elixir
defmodule Plausible.InstallationSupport.URL do
|
|
@moduledoc """
|
|
URL utilities for installation support, including cache busting functionality.
|
|
"""
|
|
|
|
def bust_url(url) do
|
|
cache_invalidator = abs(:erlang.unique_integer())
|
|
update_url(url, cache_invalidator)
|
|
end
|
|
|
|
defp update_url(url, invalidator) do
|
|
url
|
|
|> URI.parse()
|
|
|> then(fn uri ->
|
|
updated_query =
|
|
(uri.query || "")
|
|
|> URI.decode_query()
|
|
|> Map.put("plausible_verification", invalidator)
|
|
|> URI.encode_query()
|
|
|
|
struct!(uri, query: updated_query)
|
|
end)
|
|
|> to_string()
|
|
end
|
|
end
|