Packages
literature
0.4.13
0.5.1
0.5.0
0.4.22
0.4.21
0.4.20
0.4.19
0.4.18
0.4.17
0.4.16
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
retired
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.18
0.2.17
0.2.16
0.2.15
0.2.14
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.32
0.1.30
0.1.29
0.1.28
0.1.27
0.1.26
0.1.25
0.1.24
0.1.23
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
A simple CMS / Blog
Current section
Files
Jump to
Current section
Files
lib/literature/controllers/assets.ex
defmodule Literature.Assets do
@moduledoc false
use Literature.Web, :controller
css_path = Application.app_dir(:literature, ["priv", "static", "css", "app.css"])
@external_resource css_path
@css File.read!(css_path)
js_path = Application.app_dir(:literature, ["priv", "static", "js", "app.js"])
@external_resource js_path
@js File.read!(js_path)
@hashes %{
:css => Base.encode16(:crypto.hash(:md5, @css), case: :lower),
:js => Base.encode16(:crypto.hash(:md5, @js), case: :lower)
}
def init(asset) when asset in [:css, :js], do: asset
def call(conn, asset) do
{contents, content_type} = contents_and_type(asset)
conn
|> put_resp_header("content-type", content_type)
|> put_resp_header("cache-control", "public, max-age=31536000")
|> put_private(:plug_skip_csrf_protection, true)
|> send_resp(200, contents)
|> halt()
end
defp contents_and_type(:css), do: {@css, "text/css"}
defp contents_and_type(:js), do: {@js, "text/javascript"}
@doc """
Returns the current hash for the given `asset`.
"""
def current_hash(:css), do: @hashes.css
def current_hash(:js), do: @hashes.js
end