analytics/lib/plausible/installation_support/url.ex

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