Skip to content

Commit 73da012

Browse files
committed
Refactor mulitpart param map building
1 parent 6d17516 commit 73da012

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

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

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -72,16 +72,18 @@
7272
(when-let [charset (some-> params (find-param "_charset_") :value :bytes)]
7373
(String. ^bytes charset "US-ASCII")))
7474

75-
(defn- decode-form-field
75+
(defn- decode-field
7676
[{:keys [bytes encoding]} forced-encoding fallback-encoding]
7777
(String. ^bytes bytes (str (or forced-encoding encoding fallback-encoding))))
7878

79-
(defn- decode-string-values [fallback-encoding forced-encoding params]
80-
(let [forced-encoding (or forced-encoding (parse-html5-charset params))]
81-
(for [{:keys [name value field?]} params]
82-
[name (if field?
83-
(decode-form-field value forced-encoding fallback-encoding)
84-
value)])))
79+
(defn- build-param-map [encoding fallback-encoding params]
80+
(let [enc (or encoding (parse-html5-charset params))]
81+
(reduce (fn [m {:keys [name value field?]}]
82+
(assoc-conj m name (if field?
83+
(decode-field value enc fallback-encoding)
84+
value)))
85+
{}
86+
params)))
8587

8688
(def ^:private default-store (delay (tf/temp-file-store)))
8789

@@ -95,8 +97,7 @@
9597
(->> (request-context request fallback-encoding)
9698
(file-item-seq (file-upload request options))
9799
(map #(parse-file-item % store))
98-
(decode-string-values fallback-encoding encoding)
99-
(reduce (fn [m [k v]] (assoc-conj m k v)) {}))))
100+
(build-param-map encoding fallback-encoding))))
100101

101102
(defn multipart-params-request
102103
"Adds :multipart-params and :params keys to request.

0 commit comments

Comments
 (0)