diff --git a/lib/something_erlang_web/controllers/page_controller.ex b/lib/something_erlang_web/controllers/page_controller.ex index a3a1b21..ed127ed 100644 --- a/lib/something_erlang_web/controllers/page_controller.ex +++ b/lib/something_erlang_web/controllers/page_controller.ex @@ -8,14 +8,23 @@ defmodule SomethingErlangWeb.PageController do def to_forum_path(conn, %{"to" => redir_params} = _params) do %{"forum_path" => path} = redir_params - with [_, thread] <- Regex.run(~r{threadid=(\d+)}, path), - [_, page] <- Regex.run(~r{pagenumber=(\d+)}, path) do + {redirect_good, thread, page} = + case { + Regex.run(~r{threadid=(\d+)}, path), + Regex.run(~r{pagenumber=(\d+)}, path) + } do + {[_, thread], nil} -> {:ok, thread, 1} + {[_, thread], [_, page]} -> {:ok, thread, page} + _ -> {:error, nil, nil} + end + + if redirect_good == :ok do redirect(conn, to: Routes.thread_show_path(conn, :show, thread, page: page) ) + else + put_flash(conn, :error, "Could not resolve URL") + render(conn, "index.html") end - - put_flash(conn, :error, "Could not resolve URL") - render(conn, "index.html") end end