defmodule Camo.Image do def image_url(input) do %{host: host} = URI.parse(input) if !host or String.ends_with?(host, cdn_host()) do input else camo_digest = :crypto.hmac(:sha, camo_key(), input) |> Base.encode16() camo_uri = %URI{ host: camo_host(), path: "/" <> camo_digest, query: URI.encode_query(url: input), scheme: "https" } URI.to_string(camo_uri) end end defp cdn_host do Application.get_env(:philomena, :cdn_host) end defp camo_key do Application.get_env(:philomena, :camo_key) end defp camo_host do Application.get_env(:philomena, :camo_host) end end