mirror of
https://github.com/metosin/reitit.git
synced 2025-12-17 00:11:11 +00:00
intercerptors with cps-ring
This commit is contained in:
parent
eeed8576da
commit
a68cafe5ce
2 changed files with 64 additions and 58 deletions
|
|
@ -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})))
|
||||
|
||||
|
|
|
|||
|
|
@ -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)]
|
||||
|
|
|
|||
Loading…
Reference in a new issue