reitit/examples/just-coercion-with-ring/src/example/server.clj

31 lines
1 KiB
Clojure
Raw Normal View History

2017-12-03 15:43:57 +00:00
(ns example.server
(:require [ring.adapter.jetty :as jetty]
2018-01-01 20:10:15 +00:00
[muuntaja.middleware]
[ring.middleware.params]
[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
2018-01-01 20:10:15 +00:00
[rrc/coerce-exceptions-middleware
rrc/coerce-request-middleware
rrc/coerce-response-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")))