|
112 | 112 | func (load-var store)]
|
113 | 113 | (func))))
|
114 | 114 |
|
115 |
| -(defn default-invalid-filename-handler [request e] |
116 |
| - (response/bad-request (.getMessage e))) |
117 |
| - |
118 | 115 | (defn multipart-params-request
|
119 | 116 | "Adds :multipart-params and :params keys to request.
|
120 | 117 | See: wrap-multipart-params."
|
121 | 118 | {:added "1.2"}
|
122 | 119 | ([request]
|
123 | 120 | (multipart-params-request request {}))
|
124 | 121 | ([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))) |
147 | 142 |
|
148 | 143 | (defn wrap-multipart-params
|
149 | 144 | "Middleware to parse multipart parameters from a request. Adds the
|
|
184 | 179 | - A function that gets called when the file being uploaded
|
185 | 180 | has an invalid name. The function should expect two
|
186 | 181 | parameters: request and an exception of type
|
187 |
| - InvalidFileNameException." |
| 182 | + InvalidFileNameException. It should return a ring response." |
188 | 183 | ([handler]
|
189 | 184 | (wrap-multipart-params handler {}))
|
190 | 185 | ([handler options]
|
191 | 186 | (fn
|
192 | 187 | ([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)))) |
197 | 194 | ([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