Current section

Files

Jump to
cdn lib helpers.ex
Raw

lib/helpers.ex

defmodule Cdn.Helpers do
@moduledoc false
@doc ~S"""
Generate static file path.
## Examples
iex> Application.put_env(:cdn, :bypass, true)
iex> Cdn.Helpers.cdn("/css/app.css")
"/css/app.css"
iex> Cdn.Helpers.cdn("/css/app.css", true)
"/css/app.css"
iex> Application.put_env(:cdn, :cloudfront_url, "http://cdn.example.com")
...> Cdn.Helpers.cdn("/css/app.css", false)
"http://cdn.example.com/css/app.css"
iex> Cdn.Helpers.cdn("/css/app.css", true, "https://cloudfront.net")
"/css/app.css"
iex> Cdn.Helpers.cdn("/css/app.css", false, "https://cloudfront.net")
"https://cloudfront.net/css/app.css"
iex> Application.put_env(:cdn, :bypass, false)
iex> Application.put_env(:cdn, :cloudfront_url, "http://example.cloudfront.net")
...> Cdn.Helpers.cdn("/css/app.css")
"http://example.cloudfront.net/css/app.css"
"""
def cdn(path), do: cdn(path, bypass?)
def cdn(path, true = _bypass, _host), do: "#{path}"
def cdn(path, false = _bypass, host), do: "#{host}#{path}"
def cdn(path, nil = _bypass), do: path
def cdn(path, true = _bypass), do: path
def cdn(path, false = _bypass), do: "#{Application.get_env(:cdn, :cloudfront_url)}#{path}"
defp bypass?, do: Application.get_env(:cdn, :bypass)
end