lib/honu_web/views/storage_helpers.ex

defmodule HonuWeb.StorageHelpers do
  alias Honu.Attachments.Blob
  alias HonuWeb.Storage

  # Permanent url
  def blob_url(conn, blob = %Blob{}, _disposition \\ "inline") do
    data = Storage.generate_data(blob.key, Storage.permanent_opts())

    Storage.base_url(conn)
    |> URI.merge(path(blob, data))
    |> to_string()
  end

  defp path(blob, data) do
    "/#{Storage.namespace()}/storage/blobs/#{data}--#{Storage.generate_digest(data)}/#{Storage.sanitized_filename(blob.filename)}"
  end
end