(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" ["/default-kiosk" {:get {:coercion reitit.coercion.malli/coercion :parameters {:path {:service-id int?}} :handler handler/kiosk}}] ["/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]}))