From dce9e36b352509665887ea1ca2e6f81904038a11 Mon Sep 17 00:00:00 2001 From: Miguel Ángel Moreno Date: Mon, 26 Dec 2022 21:49:13 +0100 Subject: feat(backend): Modularize components --- src/backend/tau/router.clj | 55 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/backend/tau/router.clj (limited to 'src/backend/tau/router.clj') diff --git a/src/backend/tau/router.clj b/src/backend/tau/router.clj new file mode 100644 index 0000000..d6573e9 --- /dev/null +++ b/src/backend/tau/router.clj @@ -0,0 +1,55 @@ +(ns tau.router + (:require + [malli.experimental.lite :as l] + [reitit.ring :as ring] + [reitit.coercion :as coercion] + [reitit.ring.coercion :as rrc] + [reitit.coercion.malli] + [ring.middleware.reload :refer [wrap-reload]] + [ring.middleware.params :refer [wrap-params]] + [ring.middleware.json :refer [wrap-json-response]] + [ring.middleware.cors :refer [wrap-cors]] + [tau.handler :as handler])) + +(def router + (ring/router + [["/" handler/index] + ["/search" handler/index] + ["/stream" handler/index] + ["/channel" handler/index] + ["/playlist" handler/index] + ["/kiosk" handler/index] + ["/api" + ["/services" + ["" {:get handler/services}] + ["/:service-id/search" + {:get {:coercion reitit.coercion.malli/coercion + :parameters {:path {:service-id int?} + :query {:q string?}} + :handler handler/search}}] + ["/:service-id/kiosks" + ["" {:get {:coercion reitit.coercion.malli/coercion + :parameters {:path {:service-id int?}} + :handler handler/kiosks}}] + ["/:kiosk-id" + ["" {:get {:coercion reitit.coercion.malli/coercion + :parameters {:path {:service-id int? :kiosk-id string?}} + :handler handler/kiosk}}]]]] + ["/streams/:url" {:get handler/stream}] + ["/channels/:url" {:get handler/channel}] + ["/playlists/:url" {:get handler/playlist}] + ["/comments/:url" {:get handler/comments}]]] + {:data {:middleware [rrc/coerce-request-middleware + rrc/coerce-response-middleware + rrc/coerce-exceptions-middleware]}})) + +(def app + (ring/ring-handler + router + (ring/routes + (ring/create-resource-handler {:path "/"}) + (ring/create-default-handler + {:not-found (constantly {:status 404, :body "Not found"})})) + {:middleware [wrap-params + [wrap-json-response {:pretty true}] + wrap-reload]})) -- cgit v1.2.3