Skip to content

Commit

Permalink
Merge pull request #311 from boxxxie/multipart-dupe-name-fix
Browse files Browse the repository at this point in the history
Fix - Impossible to receive multipart/form-data with multiple parts h…
  • Loading branch information
malcolmsparks committed Jan 5, 2020
2 parents 2cd3167 + 90cd5dd commit c6cb858
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions ext/multipart/src/yada/multipart.clj
Original file line number Diff line number Diff line change
Expand Up @@ -662,9 +662,16 @@
;; Content-Disposition headers.
(let [schemas (get-in ctx [:resource :methods (:method ctx) :parameters])
parts-by-name (reduce
(fn [acc part] (cond-> acc
(= (:type part) :part)
(assoc (get-in part [:content-disposition :params "name"]) part)))
(fn [acc part]
(let [name (get-in part [:content-disposition :params "name"])
[_ already-occupied?] (find acc name)
result (case [(= (:type part) :part) (not (nil? already-occupied?)) (vector? already-occupied?)]
[true true true] (update acc name conj part)
[true true false] (assoc acc name [already-occupied? part])
[true false false] (assoc acc name part)
[false false false] acc
)]
result))
{} parts)]

(cond->
Expand Down

0 comments on commit c6cb858

Please sign in to comment.