defmodule ToweropsWeb.SitemapController do
@moduledoc false
use ToweropsWeb, :controller
@public_urls ["/", "/privacy", "/terms", "/docs/api", "/docs/graphql", "/help"]
def index(conn, _params) do
base_url = ToweropsWeb.Endpoint.url()
xml = build_sitemap(base_url)
conn
|> put_resp_content_type("text/xml")
|> send_resp(200, xml)
end
defp build_sitemap(base_url) do
urls =
Enum.map_join(@public_urls, "\n", fn path -> " #{base_url}#{path}" end)
String.trim("""
#{urls}
""")
end
end