From 6bc40e339a7191e08bcdf38ae49caae306523657 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=BCdiger=20Diedrich?= Date: Wed, 18 Jan 2023 10:56:30 +0100 Subject: [PATCH] better redirect logic --- .../controllers/page_controller.ex | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) 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