Dev-middleware works with async + polished code

This commit is contained in:
Tommi Reiman 2018-12-22 13:48:47 +02:00
parent 48961c9ed4
commit 7f4aa1bdcc
3 changed files with 20 additions and 14 deletions

View file

@ -61,7 +61,7 @@
{:status 200
:body {:total (+ x y)}})}}]]]
{:reitit.middleware/transform dev/print-request-diffs
{;;:reitit.middleware/transform dev/print-request-diffs
:data {:coercion reitit.coercion.spec/coercion
:muuntaja m/instance
:middleware [;; query-params & form-params

View file

@ -173,7 +173,7 @@
(defn linear-router
"Creates a linear-router from resolved routes and optional
expanded options. See [[router]] for available options"
expanded options. See [[router]] for available options."
([compiled-routes]
(linear-router compiled-routes {}))
([compiled-routes opts]
@ -218,7 +218,7 @@
(defn lookup-router
"Creates a lookup-router from resolved routes and optional
expanded options. See [[router]] for available options"
expanded options. See [[router]] for available options."
([compiled-routes]
(lookup-router compiled-routes {}))
([compiled-routes opts]
@ -263,7 +263,7 @@
(defn segment-router
"Creates a special prefix-tree style segment router from resolved routes and optional
expanded options. See [[router]] for available options"
expanded options. See [[router]] for available options."
([compiled-routes]
(segment-router compiled-routes {}))
([compiled-routes opts]
@ -307,7 +307,7 @@
(defn single-static-path-router
"Creates a fast router of 1 static route(s) and optional
expanded options. See [[router]] for available options"
expanded options. See [[router]] for available options."
([compiled-routes]
(single-static-path-router compiled-routes {}))
([compiled-routes opts]

View file

@ -9,26 +9,32 @@
(assoc :width 70)
(update :color-scheme merge {:middleware [:blue]})))
(defn diff-doc [x y z]
(defn diff-doc [name previous current]
[:group
[:span "--- Middleware " (if z (color/document printer :middleware (str z " "))) "---" :break :break]
[:nest (printer/format-doc (if x (ddiff/diff x y) y) printer)]
[:span "--- Middleware " (if name (color/document printer :middleware (str name " "))) "---" :break :break]
[:nest (printer/format-doc (if previous (ddiff/diff previous current) current) printer)]
:break])
(defn polish [request]
(dissoc request ::r/match ::r/router ::original ::previous))
(defn printed-request [name {:keys [::original ::previous] :as request}]
(printer/print-doc (diff-doc name (polish previous) (polish request)) printer)
(-> request
(update ::original (fnil identity request))
(assoc ::previous request)))
(defn print-diff-middleware
([]
(print-diff-middleware nil))
([{:keys [name]}]
{:name ::debug
{:name ::diff
:wrap (fn [handler]
(fn [{:keys [::original ::previous] :as request}]
(printer/print-doc (diff-doc (polish previous) (polish request) name) printer)
(handler (-> request
(update ::original (fnil identity request))
(assoc ::previous request)))))}))
(fn
([request]
(handler (printed-request name request)))
([request respond raise]
(handler (printed-request name request) respond raise))))}))
(defn print-request-diffs
"A middleware chain transformer that adds a request-diff printer between all middleware"