(ns dionysus.web.enduser (:require [dotenv :as env] [org.httpkit.server :as http-server] [reitit.ring :as rring] [dionysus.utils :as dutils] [dionysus.web.enduser.home :as dwehome] [dionysus.web.enduser.home.search :as dwehsearch] [ring.middleware.params :as rmparams])) (def ^:private routes [["/" {:get {:handler dwehome/handle}}] ["/search" ["/" {:get {:handler dwehsearch/handle-search}}] ["/add/:uri/" {:post {:handler dwehsearch/handle-search-add}}]] ["/current-track/" {:get {:handler dwehome/handle-current-track}}] ["/assets/*" (rring/create-resource-handler)]]) (def ^:private handler (-> routes rring/router (rring/ring-handler (rring/redirect-trailing-slash-handler)) rmparams/wrap-params)) (def ^:private stop-fn (atom nil)) (defn server-runs? [] (fn? @stop-fn)) (defn start-server! [] (when (server-runs?) (@stop-fn)) (reset! stop-fn (http-server/run-server handler {:port (-> (env/env "ENDUSER_PORT") (dutils/try-parse-int 8080))}))) #_(start-server!) (defn stop-server! [] (when (server-runs?) (@stop-fn) (reset! stop-fn nil)))