mirror of
https://github.com/metosin/reitit.git
synced 2025-12-21 18:11:12 +00:00
Merge pull request #385 from caioaao/default-options-resource
Change default-options-handler to default-options-resource
This commit is contained in:
commit
3cdd4963ff
2 changed files with 23 additions and 10 deletions
|
|
@ -28,11 +28,11 @@
|
||||||
(update acc method expand opts)
|
(update acc method expand opts)
|
||||||
acc)) data http-methods)])
|
acc)) data http-methods)])
|
||||||
|
|
||||||
(defn compile-result [[path data] {::keys [default-options-handler] :as opts}]
|
(defn compile-result [[path data] {::keys [default-options-endpoint] :as opts}]
|
||||||
(let [[top childs] (group-keys data)
|
(let [[top childs] (group-keys data)
|
||||||
childs (cond-> childs
|
childs (cond-> childs
|
||||||
(and (not (:options childs)) (not (:handler top)) default-options-handler)
|
(and (not (:options childs)) (not (:handler top)) default-options-endpoint)
|
||||||
(assoc :options {:no-doc true, :handler default-options-handler}))
|
(assoc :options default-options-endpoint))
|
||||||
->endpoint (fn [p d m s]
|
->endpoint (fn [p d m s]
|
||||||
(-> (middleware/compile-result [p d] opts s)
|
(-> (middleware/compile-result [p d] opts s)
|
||||||
(map->Endpoint)
|
(map->Endpoint)
|
||||||
|
|
@ -65,6 +65,10 @@
|
||||||
([request respond _]
|
([request respond _]
|
||||||
(respond (handle request))))))
|
(respond (handle request))))))
|
||||||
|
|
||||||
|
(def default-options-endpoint
|
||||||
|
{:no-doc true
|
||||||
|
:handler default-options-handler})
|
||||||
|
|
||||||
;;
|
;;
|
||||||
;; public api
|
;; public api
|
||||||
;;
|
;;
|
||||||
|
|
@ -74,11 +78,11 @@
|
||||||
support for http-methods and Middleware. See documentation on [[reitit.core/router]] for
|
support for http-methods and Middleware. See documentation on [[reitit.core/router]] for
|
||||||
available options. In addition, the following options are available:
|
available options. In addition, the following options are available:
|
||||||
|
|
||||||
| key | description
|
| key | description
|
||||||
| ---------------------------------------|-------------
|
| ----------------------------------------|-------------
|
||||||
| `:reitit.middleware/transform` | Function or vector of functions of type `[Middleware] => [Middleware]` to transform the expanded Middleware (default: identity)
|
| `:reitit.middleware/transform` | Function or vector of functions of type `[Middleware] => [Middleware]` to transform the expanded Middleware (default: identity)
|
||||||
| `:reitit.middleware/registry` | Map of `keyword => IntoMiddleware` to replace keyword references into Middleware
|
| `:reitit.middleware/registry` | Map of `keyword => IntoMiddleware` to replace keyword references into Middleware
|
||||||
| `:reitit.ring/default-options-handler` | Default handler for `:options` method in endpoints (default: default-options-handler)
|
| `:reitit.ring/default-options-endpoint` | Default resource for `:options` method in endpoints (default: default-options-endpoint)
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
|
@ -93,7 +97,12 @@
|
||||||
([data opts]
|
([data opts]
|
||||||
(let [opts (merge {:coerce coerce-handler
|
(let [opts (merge {:coerce coerce-handler
|
||||||
:compile compile-result
|
:compile compile-result
|
||||||
::default-options-handler default-options-handler} opts)]
|
::default-options-endpoint default-options-endpoint}
|
||||||
|
opts)]
|
||||||
|
(assert (not (contains? opts ::default-options-handler))
|
||||||
|
(str
|
||||||
|
"Option `:reitit.ring/default-options-handler` is deprecated."
|
||||||
|
" Use `:reitit.ring/default-options-endpoint` instead."))
|
||||||
(r/router data opts))))
|
(r/router data opts))))
|
||||||
|
|
||||||
(defn routes
|
(defn routes
|
||||||
|
|
|
||||||
|
|
@ -205,6 +205,10 @@
|
||||||
(is (= 405 (:status (app {:request-method :post, :uri "/ping"}))))))))))
|
(is (= 405 (:status (app {:request-method :post, :uri "/ping"}))))))))))
|
||||||
|
|
||||||
(deftest default-options-handler-test
|
(deftest default-options-handler-test
|
||||||
|
(testing "Assertion fails when using deprecated options-handler"
|
||||||
|
(is (thrown? java.lang.AssertionError (ring/router [] {::ring/default-options-handler (fn [_] )})))))
|
||||||
|
|
||||||
|
(deftest default-options-endpoint-test
|
||||||
(let [response {:status 200, :body "ok"}]
|
(let [response {:status 200, :body "ok"}]
|
||||||
|
|
||||||
(testing "with defaults"
|
(testing "with defaults"
|
||||||
|
|
@ -241,7 +245,7 @@
|
||||||
[["/get" {:get (constantly response)}]
|
[["/get" {:get (constantly response)}]
|
||||||
["/options" {:options (constantly response)}]
|
["/options" {:options (constantly response)}]
|
||||||
["/any" (constantly response)]]
|
["/any" (constantly response)]]
|
||||||
{::ring/default-options-handler nil}))]
|
{::ring/default-options-endpoint nil}))]
|
||||||
|
|
||||||
(testing "endpoint with a non-options handler"
|
(testing "endpoint with a non-options handler"
|
||||||
(is (= response (app {:request-method :get, :uri "/get"})))
|
(is (= response (app {:request-method :get, :uri "/get"})))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue