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

View file

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