diff options
author | Miguel Ángel Moreno <mail@migalmoreno.com> | 2022-12-26 21:49:13 +0100 |
---|---|---|
committer | Miguel Ángel Moreno <mail@migalmoreno.com> | 2022-12-26 21:49:13 +0100 |
commit | dce9e36b352509665887ea1ca2e6f81904038a11 (patch) | |
tree | 2ba797188500e2677e3182f38d2334307be3e295 /src/backend/tau/router.clj | |
parent | 9361d6444548748445db1548d0e3a6291d802bd3 (diff) |
feat(backend): Modularize components
Diffstat (limited to 'src/backend/tau/router.clj')
-rw-r--r-- | src/backend/tau/router.clj | 55 |
1 files changed, 55 insertions, 0 deletions
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]})) |