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

View file

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

View file

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