intercerptors with cps-ring

This commit is contained in:
Tommi Reiman 2018-08-25 14:21:11 +03:00
parent eeed8576da
commit a68cafe5ce
2 changed files with 64 additions and 58 deletions

View file

@ -96,6 +96,7 @@
(interceptor/execute executor default-queue request)))
(interceptor/execute executor default-queue request)))
([request respond raise]
(let [default #(interceptor/execute executor default-queue % respond raise)]
(if-let [match (r/match-by-path router (:uri request))]
(let [method (:request-method request)
path-params (:path-params match)
@ -104,9 +105,15 @@
request (-> request
(impl/fast-assoc :path-params path-params)
(impl/fast-assoc ::r/match match)
(impl/fast-assoc ::r/router router))]
(interceptor/execute executor interceptors request respond raise))
(interceptor/execute executor default-queue request respond raise))
(impl/fast-assoc ::r/router router))
respond' (fn [response]
(if response
(respond response)
(default request)))]
(if interceptors
(interceptor/execute executor interceptors request respond' raise)
(default request)))
(default request)))
nil))
{::r/router router})))

View file

@ -170,18 +170,17 @@
(testing "handler rejects"
(is (= -406 (:status (app {:request-method :get, :uri "/pong"}))))))))))
#_(deftest async-http-test
(deftest async-http-test
(let [promise #(let [value (atom ::nil)]
(fn
([] @value)
([x] (reset! value x))))
([x]
(reset! value x))))
response {:status 200, :body "ok"}
router (http/router
[["/ping" {:get (fn [_ respond _]
(respond response))}]
["/pong" (fn [_ respond _]
(respond nil))]])
app (http/ring-handler router)]
[["/ping" {:get (fn [_] response)}]
["/pong" (fn [_] nil)]])
app (http/ring-handler router nil {:executor sieppari/executor})]
(testing "match"
(let [respond (promise)
@ -214,7 +213,7 @@
(testing "with default http responses"
(let [app (http/ring-handler router (ring/create-default-handler))]
(let [app (http/ring-handler router (ring/create-default-handler) {:executor sieppari/executor})]
(testing "route doesn't match"
(let [respond (promise)
raise (promise)]