From a6af0b6e9624e9f011035107fd14d2d0cb16aa1c Mon Sep 17 00:00:00 2001 From: KKlochko Date: Sat, 8 Jul 2023 18:28:52 +0300 Subject: [PATCH] Add the redirect route. --- CHANGELOG.org | 2 ++ .../controllers/redirect_controller.ex | 9 +++++++++ lib/link_shortener_web/router.ex | 1 + mix.exs | 2 +- 4 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 lib/link_shortener_web/controllers/redirect_controller.ex diff --git a/CHANGELOG.org b/CHANGELOG.org index 76bfa7b..a23b867 100644 --- a/CHANGELOG.org +++ b/CHANGELOG.org @@ -11,4 +11,6 @@ Added a generator of a SafeString. ** 0.2.1 <2023-07-07 Fri> Added a method to create an Link using a generator. +** 0.3.0 <2023-07-08 Sat> + Added the redirect route. diff --git a/lib/link_shortener_web/controllers/redirect_controller.ex b/lib/link_shortener_web/controllers/redirect_controller.ex new file mode 100644 index 0000000..37f7f15 --- /dev/null +++ b/lib/link_shortener_web/controllers/redirect_controller.ex @@ -0,0 +1,9 @@ +defmodule LinkShortenerWeb.RedirectController do + use LinkShortenerWeb, :controller + alias LinkShortener.Links + + def show(conn, %{"shorten" => shorten}) do + %{url: url} = Links.get_one_by_shorten(shorten) + redirect(conn, external: url) + end +end diff --git a/lib/link_shortener_web/router.ex b/lib/link_shortener_web/router.ex index 181a7ad..a60be5d 100644 --- a/lib/link_shortener_web/router.ex +++ b/lib/link_shortener_web/router.ex @@ -18,6 +18,7 @@ defmodule LinkShortenerWeb.Router do pipe_through :browser get "/", PageController, :index + get "/u/:shorten", RedirectController, :show end # Other scopes may use custom stacks. diff --git a/mix.exs b/mix.exs index ee04042..918a22f 100644 --- a/mix.exs +++ b/mix.exs @@ -4,7 +4,7 @@ defmodule LinkShortener.MixProject do def project do [ app: :link_shortener, - version: "0.2.1", + version: "0.3.0", elixir: "~> 1.12", elixirc_paths: elixirc_paths(Mix.env()), compilers: [] ++ Mix.compilers(),