2022-05-23 15:57:15 +02:00
|
|
|
defmodule SomethingErlangWeb.PageController do
|
|
|
|
use SomethingErlangWeb, :controller
|
|
|
|
|
2024-06-02 15:23:32 +02:00
|
|
|
def home(conn, params) do
|
2023-01-18 16:13:51 +01:00
|
|
|
# The home page is often custom made,
|
|
|
|
# so skip the default app layout.
|
2024-06-02 15:23:32 +02:00
|
|
|
conn = assign(conn, :params, params)
|
|
|
|
render(conn, :home)
|
|
|
|
end
|
|
|
|
|
|
|
|
def to_forum_path(conn, %{"forum_path" => path} = _params) do
|
|
|
|
with {:ok, thread, page} <- resolve_url(path) do
|
|
|
|
redirect(conn, to: ~p"/thread/#{thread}?page=#{page}")
|
|
|
|
else
|
|
|
|
_ ->
|
|
|
|
put_flash(conn, :error, "Could not resolve URL")
|
|
|
|
render(conn, :home)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def to_forum_path(conn, _params) do
|
|
|
|
render(conn, :home)
|
|
|
|
end
|
|
|
|
|
|
|
|
defp resolve_url(url) do
|
|
|
|
threadid =
|
|
|
|
case Regex.run(~r{threadid=(\d+)}, url) do
|
|
|
|
[_, threadid] -> {:ok, threadid}
|
|
|
|
nil -> {:error, :nothreadid}
|
|
|
|
end
|
|
|
|
|
|
|
|
page =
|
|
|
|
case Regex.run(~r{pagenumber=(\d+)}, url) do
|
|
|
|
[_, page] -> {:ok, page}
|
|
|
|
nil -> {:ok, 1}
|
|
|
|
end
|
|
|
|
|
|
|
|
with {:ok, threadid} <- threadid,
|
|
|
|
{:ok, page} <- page do
|
|
|
|
{:ok, threadid, page}
|
|
|
|
else
|
|
|
|
_ ->
|
|
|
|
{:error, :cantparseurl}
|
|
|
|
end
|
2023-02-17 15:05:27 +01:00
|
|
|
end
|
2022-05-23 15:57:15 +02:00
|
|
|
end
|