Muuntaja is a def

This commit is contained in:
Tommi Reiman 2018-07-22 14:40:54 +03:00
parent 805cb94d33
commit 5c0cf19ef1
3 changed files with 18 additions and 19 deletions

View file

@ -10,7 +10,8 @@
[schema.core :refer [Int]] [schema.core :refer [Int]]
[ring.adapter.jetty :as jetty] [ring.adapter.jetty :as jetty]
[ring.middleware.params])) [ring.middleware.params]
[muuntaja.core :as m]))
(def app (def app
(ring/ring-handler (ring/ring-handler
@ -58,8 +59,9 @@
{:status 200 {:status 200
:body {:total (+ x y)}})}}]]] :body {:total (+ x y)}})}}]]]
{:data {:middleware [ring.middleware.params/wrap-params {:data {:muuntaja m/instance
(muuntaja/create-format-middleware) :middleware [ring.middleware.params/wrap-params
muuntaja/format-middleware
swagger/swagger-feature swagger/swagger-feature
rrc/coerce-exceptions-middleware rrc/coerce-exceptions-middleware
rrc/coerce-request-middleware rrc/coerce-request-middleware

View file

@ -5,17 +5,12 @@
(s/def ::muuntaja (partial instance? m/Muuntaja)) (s/def ::muuntaja (partial instance? m/Muuntaja))
(defn create-format-middleware (def format-middleware
([] {:name ::formats
(create-format-middleware m/default-options)) :spec (s/keys :opt-un [::muuntaja])
([options] :compile (fn [{:keys [muuntaja]} _]
{:name ::formats (if muuntaja
:spec (s/keys :opt-un [::muuntaja]) {:data {:swagger {:produces (m/encodes muuntaja)
:compile (fn [{:keys [muuntaja]} _] :consumes (m/decodes muuntaja)}}
(let [options (or muuntaja options)] :wrap (fn [handler]
(if options (muuntaja.middleware/wrap-format handler muuntaja))}))})
(let [m (m/create options)]
{:data {:swagger {:produces (m/encodes m)
:consumes (m/decodes m)}}
:wrap (fn [handler]
(muuntaja.middleware/wrap-format handler m))}))))}))

View file

@ -10,7 +10,8 @@
app (ring/ring-handler app (ring/ring-handler
(ring/router (ring/router
["/ping" {:get (constantly {:status 200, :body data})}] ["/ping" {:get (constantly {:status 200, :body data})}]
{:data {:middleware [(muuntaja/create-format-middleware)]}}))] {:data {:muuntaja m/instance
:middleware [muuntaja/format-middleware]}}))]
(is (= data (->> {:request-method :get, :uri "/ping"} (is (= data (->> {:request-method :get, :uri "/ping"}
(app) (app)
:body :body
@ -36,7 +37,8 @@
["/swagger.json" ["/swagger.json"
{:get {:no-doc true {:get {:no-doc true
:handler (swagger/create-swagger-handler)}}]] :handler (swagger/create-swagger-handler)}}]]
{:data {:middleware [(muuntaja/create-format-middleware)]}})) {:data {:muuntaja m/instance
:middleware [muuntaja/format-middleware]}}))
spec (fn [path] spec (fn [path]
(let [path (keyword path)] (let [path (keyword path)]
(-> {:request-method :get :uri "/swagger.json"} (-> {:request-method :get :uri "/swagger.json"}