2017-12-03 15:43:57 +00:00
|
|
|
(ns example.server
|
|
|
|
|
(:require [ring.adapter.jetty :as jetty]
|
2017-12-04 21:58:05 +00:00
|
|
|
[reitit.middleware :as middleware]
|
2017-12-31 09:29:51 +00:00
|
|
|
[reitit.ring.coercion :as rrc]))
|
2017-12-03 15:43:57 +00:00
|
|
|
|
|
|
|
|
(defonce ^:private server (atom nil))
|
|
|
|
|
|
|
|
|
|
;; unlift Middleware Record into vanilla Ring middleware
|
|
|
|
|
;; NOTE: to support format-based body coercion, an options map needs
|
|
|
|
|
;; to be set with :extract-request-format and extract-response-format
|
|
|
|
|
(defn wrap-coercion [handler resource]
|
|
|
|
|
(middleware/chain
|
2017-12-31 09:29:51 +00:00
|
|
|
[rrc/coerce-request-middleware
|
|
|
|
|
rrc/coerce-response-middleware
|
|
|
|
|
rrc/coerce-exceptions-middleware]
|
2017-12-03 15:43:57 +00:00
|
|
|
handler
|
|
|
|
|
resource))
|
|
|
|
|
|
|
|
|
|
(defn restart [handler]
|
|
|
|
|
(let [app (-> handler
|
|
|
|
|
(ring.middleware.params/wrap-params)
|
|
|
|
|
(muuntaja.middleware/wrap-format))]
|
|
|
|
|
(swap! server (fn [x]
|
|
|
|
|
(when x (.stop x))
|
|
|
|
|
(jetty/run-jetty
|
|
|
|
|
handler
|
|
|
|
|
{:port 3000, :join? false})))
|
|
|
|
|
(println "server running in port 3000")))
|