Skip to content

Commit 9e90830

Browse files
committed
Refactor params
1 parent 99ece0b commit 9e90830

File tree

1 file changed

+20
-10
lines changed

1 file changed

+20
-10
lines changed

ring-core/src/ring/middleware/params.clj

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,35 @@
88
(let [params (codec/form-decode params encoding)]
99
(if (map? params) params {})))
1010

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+
1123
(defn assoc-query-params
1224
"Parse and assoc parameters from the query string with the request."
1325
{:added "1.3"}
1426
[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)))
2031

2132
(defn assoc-form-params
2233
"Parse and assoc parameters from the request body with the request."
2334
{:added "1.2"}
2435
[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)))
3040

3141
(defn params-request
3242
"Adds parameters from the query string and the request body to the request

0 commit comments

Comments
 (0)