mirror of
https://github.com/metosin/reitit.git
synced 2025-12-16 16:01:11 +00:00
Merge pull request #495 from nextjournal/pedestal-enrich-default-request
Enrich request for pedestal/routing-interceptor default-queue
This commit is contained in:
commit
57e1d1668d
2 changed files with 27 additions and 2 deletions
|
|
@ -89,7 +89,8 @@
|
|||
default-interceptors (->> interceptors
|
||||
(map #(interceptor/into-interceptor % nil (r/options router))))
|
||||
default-queue (interceptor/queue executor default-interceptors)
|
||||
enrich-request (ring/create-enrich-request inject-match? inject-router?)]
|
||||
enrich-request (ring/create-enrich-request inject-match? inject-router?)
|
||||
enrich-default-request (ring/create-enrich-default-request inject-router?)]
|
||||
{:name ::router
|
||||
:enter (fn [{:keys [request] :as context}]
|
||||
(if-let [match (r/match-by-path router (:uri request))]
|
||||
|
|
@ -101,7 +102,9 @@
|
|||
context (assoc context :request request)
|
||||
queue (interceptor/queue executor (concat default-interceptors interceptors))]
|
||||
(interceptor/enqueue executor context queue))
|
||||
(interceptor/enqueue executor context default-queue)))
|
||||
(let [request (enrich-default-request request router)
|
||||
context (assoc context :request request)]
|
||||
(interceptor/enqueue executor context default-queue))))
|
||||
:leave (fn [context]
|
||||
(if-not (:response context)
|
||||
(assoc context :response (default-handler (:request context)))
|
||||
|
|
|
|||
|
|
@ -41,3 +41,25 @@
|
|||
(:io.pedestal.http/service-fn))]
|
||||
(is (= "ok" (:body (io.pedestal.test/response-for service :get "/ok"))))
|
||||
(is (= 500 (:status (io.pedestal.test/response-for service :get "/fail"))))))
|
||||
|
||||
(deftest pedestal-inject-router-test
|
||||
(let [check-router (fn [r] (when-not (:reitit.core/router r)
|
||||
(throw (ex-info "Missing :reitit.core/router!" {}))))
|
||||
interceptor {:name ::needs-router
|
||||
:enter (fn [{:as context :keys [request]}]
|
||||
(check-router request)
|
||||
context)}
|
||||
router (pedestal/routing-interceptor
|
||||
(http/router
|
||||
[""
|
||||
["/ok" (fn [r] (check-router r) {:status 200, :body "ok"})]])
|
||||
nil
|
||||
{:interceptors [interceptor]})
|
||||
service (-> {:io.pedestal.http/request-logger nil
|
||||
:io.pedestal.http/routes []}
|
||||
(io.pedestal.http/default-interceptors)
|
||||
(pedestal/replace-last-interceptor router)
|
||||
(io.pedestal.http/create-servlet)
|
||||
(:io.pedestal.http/service-fn))]
|
||||
(is (= "ok" (:body (io.pedestal.test/response-for service :get "/ok"))))
|
||||
(is (= "Not Found" (:body (io.pedestal.test/response-for service :get "/not-existing"))))))
|
||||
|
|
|
|||
Loading…
Reference in a new issue