mirror of
https://github.com/metosin/reitit.git
synced 2025-12-16 16:01:11 +00:00
Decode path-params on match-by-name, fixes #192
This commit is contained in:
parent
0b9c72ab0f
commit
260b167853
3 changed files with 6 additions and 3 deletions
|
|
@ -3,6 +3,7 @@
|
|||
## `reitit-core`
|
||||
|
||||
* `segment-router` doesn't accept empty segments as path-parameters, fixes [#181](https://github.com/metosin/reitit/issues/181).
|
||||
* path-params are decoded correctly with `r/match-by-name`, fixes [#192](https://github.com/metosin/reitit/issues/192).
|
||||
|
||||
## 0.2.9 (2018-11-21)
|
||||
|
||||
|
|
|
|||
|
|
@ -176,7 +176,7 @@
|
|||
(fn [[pl nl] [p {:keys [name] :as data} result]]
|
||||
(let [{:keys [path-params] :as route} (impl/create [p data result])
|
||||
f #(if-let [path (impl/path-for route %)]
|
||||
(->Match p data result % path)
|
||||
(->Match p data result (impl/url-decode-coll %) path)
|
||||
(->PartialMatch p data result % path-params))]
|
||||
[(conj pl route)
|
||||
(if name (assoc nl name f) nl)]))
|
||||
|
|
@ -266,7 +266,7 @@
|
|||
(fn [[pl nl] [p {:keys [name] :as data} result]]
|
||||
(let [{:keys [path-params] :as route} (impl/create [p data result])
|
||||
f #(if-let [path (impl/path-for route %)]
|
||||
(->Match p data result % path)
|
||||
(->Match p data result (impl/url-decode-coll %) path)
|
||||
(->PartialMatch p data result % path-params))]
|
||||
[(segment/insert pl p (->Match p data result nil nil))
|
||||
(if name (assoc nl name f) nl)]))
|
||||
|
|
|
|||
|
|
@ -52,12 +52,14 @@
|
|||
(r/match-by-name! router ::beer))))))
|
||||
|
||||
(testing "decode %-encoded path params"
|
||||
(let [router (r/router [["/one-param-path/:param1"]
|
||||
(let [router (r/router [["/one-param-path/:param1" ::one]
|
||||
["/two-param-path/:param1/:param2"]
|
||||
["/catchall/*remaining-path"]] {:router r})
|
||||
decoded-params #(-> router (r/match-by-path %) :path-params)
|
||||
decoded-param1 #(-> (decoded-params %) :param1)
|
||||
decoded-remaining-path #(-> (decoded-params %) :remaining-path)]
|
||||
(is (= {:param1 "käki"} (:path-params (r/match-by-name router ::one {:param1 "käki"}))))
|
||||
(is (= "/one-param-path/k%C3%A4ki" (:path (r/match-by-name router ::one {:param1 "käki"}))))
|
||||
(is (= "foo bar" (decoded-param1 "/one-param-path/foo%20bar")))
|
||||
(is (= {:param1 "foo bar" :param2 "baz qux"} (decoded-params "/two-param-path/foo%20bar/baz%20qux")))
|
||||
(is (= "foo bar" (decoded-remaining-path "/catchall/foo%20bar")))
|
||||
|
|
|
|||
Loading…
Reference in a new issue