diff --git a/lib/home73k_web/controllers/err_controller.ex b/lib/home73k_web/controllers/err_controller.ex new file mode 100644 index 0000000..dc50038 --- /dev/null +++ b/lib/home73k_web/controllers/err_controller.ex @@ -0,0 +1,68 @@ +defmodule Home73kWeb.ErrController do + use Home73kWeb, :controller + plug :put_layout, false + plug :put_root_layout, false + + @valid_codes [ + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 421, + 422, + 423, + 424, + 425, + 426, + 428, + 429, + 431, + 451, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 510, + 511 + ] + + def err(conn, params) do + code = Map.get(params, "code", "404") |> err_code_as_int() + code = (code in @valid_codes && code) || 404 + + conn + |> put_status(code) + |> put_layout(false) + |> put_root_layout(false) + |> put_view(Home73kWeb.ErrorView) + |> render("#{code}.html") + end + + defp err_code_as_int(code) do + try do + String.to_integer(code) + rescue + _ -> 404 + end + end +end diff --git a/lib/home73k_web/controllers/home_controller.ex b/lib/home73k_web/controllers/home_controller.ex index 5ca59bf..dcd9766 100644 --- a/lib/home73k_web/controllers/home_controller.ex +++ b/lib/home73k_web/controllers/home_controller.ex @@ -16,29 +16,4 @@ defmodule Home73kWeb.HomeController do def folio(conn, _params) do render(conn, "folio.html", page_title: "Folio") end - - @valid_codes [400..418, 421..426, 428..429, 500..508] - |> Enum.map(&Enum.to_list/1) - |> Enum.concat() - |> Enum.concat([431, 451, 510, 511]) - - def err(conn, params) do - code = Map.get(params, "code", "404") |> err_code_as_int() - code = code in @valid_codes && code || 404 - - conn - |> put_status(code) - |> put_layout(false) - |> put_root_layout(false) - |> put_view(Home73kWeb.ErrorView) - |> render("#{code}.html") - end - - defp err_code_as_int(code) do - try do - String.to_integer(code) - rescue - _ -> 404 - end - end end diff --git a/lib/home73k_web/router.ex b/lib/home73k_web/router.ex index a276747..a0b54e5 100644 --- a/lib/home73k_web/router.ex +++ b/lib/home73k_web/router.ex @@ -24,8 +24,6 @@ defmodule Home73kWeb.Router do get "/about", HomeController, :about get "/resume", HomeController, :resume get "/folio", HomeController, :folio - get "/err", HomeController, :err - get "/err/:code", HomeController, :err # Blog live "/blog", BlogLive, :index @@ -35,6 +33,10 @@ defmodule Home73kWeb.Router do # Feeds get "/feed", FeedController, :rss + + # Error fun/testing + get "/err", ErrController, :err + get "/err/:code", ErrController, :err end # Other scopes may use custom stacks.