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(),