| 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 | |