defmodule SomethingErlangWeb.PageController do use SomethingErlangWeb, :controller def index(conn, _params) do render(conn, "index.html") end def to_forum_path(conn, %{"to" => redir_params} = _params) do %{"forum_path" => path} = redir_params {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 end end