|
8 | 8 | (let [params (codec/form-decode params encoding)]
|
9 | 9 | (if (map? params) params {})))
|
10 | 10 |
|
| 11 | +(defn merge2 |
| 12 | + [x y] |
| 13 | + (if y |
| 14 | + (reduce-kv assoc (or x {}) y) |
| 15 | + (or x {}))) |
| 16 | + |
| 17 | +(defn- annotate |
| 18 | + ([m v k] |
| 19 | + (assoc m k (if-let [v' (k m)] (merge2 v' v) v))) |
| 20 | + ([m v k1 k2] |
| 21 | + (-> m (annotate v k1) (annotate v k2)))) |
| 22 | + |
11 | 23 | (defn assoc-query-params
|
12 | 24 | "Parse and assoc parameters from the query string with the request."
|
13 | 25 | {:added "1.3"}
|
14 | 26 | [request encoding]
|
15 |
| - (merge-with merge request |
16 |
| - (if-let [query-string (:query-string request)] |
17 |
| - (let [params (parse-params query-string encoding)] |
18 |
| - {:query-params params, :params params}) |
19 |
| - {:query-params {}, :params {}}))) |
| 27 | + (if-let [query-string (:query-string request)] |
| 28 | + (let [params (parse-params query-string encoding)] |
| 29 | + (annotate request params :query-params :params)) |
| 30 | + (annotate request {} :query-params :params))) |
20 | 31 |
|
21 | 32 | (defn assoc-form-params
|
22 | 33 | "Parse and assoc parameters from the request body with the request."
|
23 | 34 | {:added "1.2"}
|
24 | 35 | [request encoding]
|
25 |
| - (merge-with merge request |
26 |
| - (if-let [body (and (req/urlencoded-form? request) (:body request))] |
27 |
| - (let [params (parse-params (slurp body :encoding encoding) encoding)] |
28 |
| - {:form-params params, :params params}) |
29 |
| - {:form-params {}, :params {}}))) |
| 36 | + (if-let [body (and (req/urlencoded-form? request) (:body request))] |
| 37 | + (let [params (parse-params (slurp body :encoding encoding) encoding)] |
| 38 | + (annotate request params :form-params :params)) |
| 39 | + (annotate request {} :form-params :params))) |
30 | 40 |
|
31 | 41 | (defn params-request
|
32 | 42 | "Adds parameters from the query string and the request body to the request
|
|
0 commit comments