server.clj 818 B

12345678910111213141516171819202122232425
  1. (ns attendant.server
  2. (:require
  3. [attendant.handler :refer [make-handler]]
  4. [com.stuartsierra.component :as component]
  5. [ring.adapter.jetty :refer [run-jetty]]
  6. [ring.middleware.file :refer [wrap-file]]
  7. [ring.middleware.reload :refer [wrap-reload]]))
  8. (defrecord Server [port dir dev]
  9. component/Lifecycle
  10. (start [this]
  11. (println "starting web server" (if dev "(in dev mode)" "") "and serving files from" (or dir "."))
  12. (let [handler (wrap-file (make-handler) (or dir "."))
  13. hand (if dev
  14. (wrap-reload handler)
  15. handler)]
  16. (assoc this :server
  17. (run-jetty hand {:port port
  18. :join? false}))))
  19. (stop [this]
  20. (println "stopping web server")
  21. (.stop (:server this))
  22. (.destroy (:server this))
  23. this))