analytics/lib/plausible_web/controllers/tracker_controller.ex
Uku Taht 4aa4dfdcaf
Hash mode (#299)
* Build tracker with hash mode

* Extract hash fragment in hash mode

* Serve new hash-based tracker
2020-08-25 10:56:36 +03:00

56 lines
1.2 KiB
Elixir
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

defmodule PlausibleWeb.TrackerController do
use PlausibleWeb, :controller
require EEx
EEx.function_from_file(
:defp,
:render_plausible,
Application.app_dir(:plausible, "priv/tracker/js/plausible.js"),
[:base_url]
)
EEx.function_from_file(
:defp,
:render_plausible_hash,
Application.app_dir(:plausible, "priv/tracker/js/plausible.hash.js"),
[:base_url]
)
EEx.function_from_file(
:defp,
:render_p,
Application.app_dir(:plausible, "priv/tracker/js/p.js"),
[:base_url]
)
#  1 hour
@max_age 3600
def plausible(conn, _params) do
send_js(conn, render_plausible(base_url()))
end
def plausible_hash(conn, _params) do
send_js(conn, render_plausible_hash(base_url()))
end
def analytics(conn, _params) do
send_js(conn, render_plausible(base_url()))
end
def p(conn, _params) do
send_js(conn, render_p(base_url()))
end
defp send_js(conn, file) do
conn
|> put_resp_header("cache-control", "max-age=#{@max_age},public")
|> put_resp_header("content-type", "application/javascript")
|> send_resp(200, file)
end
defp base_url() do
PlausibleWeb.Endpoint.clean_url()
end
end