From f4110172802769d02fe21a24013b9521d0294b24 Mon Sep 17 00:00:00 2001 From: SphericalKat Date: Fri, 13 Aug 2021 07:54:07 +0530 Subject: [PATCH] feat(pastes): set up redirection routes Signed-off-by: SphericalKat --- lib/ketbin_web/controllers/page_controller.ex | 19 +++++++++++++++++-- lib/ketbin_web/router.ex | 1 + 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/ketbin_web/controllers/page_controller.ex b/lib/ketbin_web/controllers/page_controller.ex index e17edcd..9623575 100644 --- a/lib/ketbin_web/controllers/page_controller.ex +++ b/lib/ketbin_web/controllers/page_controller.ex @@ -12,6 +12,16 @@ defmodule KetbinWeb.PageController do def show(conn, %{"id" => id}) do paste = Pastes.get_paste!(id) + + if paste.is_url do + redirect(conn, external: paste.content) + else + render(conn, "show.html", paste: paste) + end + end + + def showlink(conn, %{"id" => id}) do + paste = Pastes.get_paste!(id) render(conn, "show.html", paste: paste) end @@ -28,8 +38,13 @@ defmodule KetbinWeb.PageController do case Pastes.create_paste(paste_params) do {:ok, paste} -> - conn - |> redirect(to: Routes.page_path(conn, :show, paste)) + unless is_url do + conn + |> redirect(to: Routes.page_path(conn, :show, paste)) + else + conn + |> redirect(to: Routes.page_path(conn, :showlink, paste)) + end {:error, %Ecto.Changeset{} = changeset} -> render(conn, "index.html", changeset: changeset) diff --git a/lib/ketbin_web/router.ex b/lib/ketbin_web/router.ex index 0af8b63..e0e47e0 100644 --- a/lib/ketbin_web/router.ex +++ b/lib/ketbin_web/router.ex @@ -21,6 +21,7 @@ defmodule KetbinWeb.Router do get "/", PageController, :index get "/:id", PageController, :show + get "/v/:id", PageController, :showlink post "/", PageController, :create end