Skip to content

Commit 557f2bb

Browse files
committed
Changes based on review 4
- Refactor to avoid using metadata. - Expand the docstring slightly to give some indication of the expected return value when invalid-filename-handler is overridden.
1 parent cd881bd commit 557f2bb

File tree

1 file changed

+33
-34
lines changed

1 file changed

+33
-34
lines changed

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

+33-34
Original file line numberDiff line numberDiff line change
@@ -112,38 +112,33 @@
112112
func (load-var store)]
113113
(func))))
114114

115-
(defn default-invalid-filename-handler [request e]
116-
(response/bad-request (.getMessage e)))
117-
118115
(defn multipart-params-request
119116
"Adds :multipart-params and :params keys to request.
120117
See: wrap-multipart-params."
121118
{:added "1.2"}
122119
([request]
123120
(multipart-params-request request {}))
124121
([request options]
125-
(try
126-
(let [store (or (:store options) @default-store)
127-
forced-encoding (:encoding options)
128-
req-encoding (or forced-encoding
129-
(:fallback-encoding options)
130-
(req/character-encoding request)
131-
"UTF-8")
132-
progress (:progress-fn options)
133-
params (if (multipart-form? request)
134-
(parse-multipart-params request
135-
req-encoding
136-
forced-encoding
137-
store
138-
progress)
139-
{})]
140-
(merge-with merge request
141-
{:multipart-params params}
142-
{:params params}))
143-
(catch InvalidFileNameException e
144-
(let [invalid-filename-handler
145-
(:invalid-filename-handler options default-invalid-filename-handler)]
146-
(with-meta (invalid-filename-handler request e) {::error? true}))))))
122+
(let [store (or (:store options) @default-store)
123+
forced-encoding (:encoding options)
124+
req-encoding (or forced-encoding
125+
(:fallback-encoding options)
126+
(req/character-encoding request)
127+
"UTF-8")
128+
progress (:progress-fn options)
129+
params (if (multipart-form? request)
130+
(parse-multipart-params request
131+
req-encoding
132+
forced-encoding
133+
store
134+
progress)
135+
{})]
136+
(merge-with merge request
137+
{:multipart-params params}
138+
{:params params}))))
139+
140+
(defn default-invalid-filename-handler [request e]
141+
(response/bad-request (.getMessage e)))
147142

148143
(defn wrap-multipart-params
149144
"Middleware to parse multipart parameters from a request. Adds the
@@ -184,18 +179,22 @@
184179
- A function that gets called when the file being uploaded
185180
has an invalid name. The function should expect two
186181
parameters: request and an exception of type
187-
InvalidFileNameException."
182+
InvalidFileNameException. It should return a ring response."
188183
([handler]
189184
(wrap-multipart-params handler {}))
190185
([handler options]
191186
(fn
192187
([request]
193-
(let [multipart-params-request (multipart-params-request request options)]
194-
(if (contains? (meta multipart-params-request) ::error?)
195-
multipart-params-request
196-
(handler multipart-params-request))))
188+
(let [req-or-ex (try
189+
(multipart-params-request request options)
190+
(catch Exception ex ex))]
191+
(if (instance? Throwable req-or-ex)
192+
(invalid-filename-handler request req-or-ex)
193+
(handler req-or-ex))))
197194
([request respond raise]
198-
(let [multipart-params-request (multipart-params-request request options)]
199-
(if (contains? (meta multipart-params-request) ::error?)
200-
(handler multipart-params-request respond raise)
201-
(respond multipart-params-request)))))))
195+
(let [req-or-ex (try
196+
(multipart-params-request request options)
197+
(catch Exception ex ex))]
198+
(if (instance? Throwable req-or-ex)
199+
(respond (invalid-filename-handler request req-or-ex))
200+
(handler req-or-ex respond raise)))))))

0 commit comments

Comments
 (0)