diff options
author | Loïc Hoguin <[email protected]> | 2017-06-09 16:57:11 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2017-06-09 16:57:11 +0200 |
commit | ec00e3d60e985e00c6b425434af5017c634801db (patch) | |
tree | 52a94d91613704264935aa424330df71d47120b9 /src | |
parent | 6f7b59886ec17027b16ed4d10737452e17f233d0 (diff) | |
download | cowboy-ec00e3d60e985e00c6b425434af5017c634801db.tar.gz cowboy-ec00e3d60e985e00c6b425434af5017c634801db.tar.bz2 cowboy-ec00e3d60e985e00c6b425434af5017c634801db.zip |
Make cowboy_req:read_part return multipart headers as map
Diffstat (limited to 'src')
-rw-r--r-- | src/cowboy_req.erl | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/cowboy_req.erl b/src/cowboy_req.erl index ffc6e12..ab77a68 100644 --- a/src/cowboy_req.erl +++ b/src/cowboy_req.erl @@ -463,7 +463,7 @@ read_part(Req) -> read_part(Req, #{length => 64000, period => 5000}). -spec read_part(Req, read_body_opts()) - -> {ok, cow_multipart:headers(), Req} | {done, Req} + -> {ok, #{binary() => binary()}, Req} | {done, Req} when Req::req(). read_part(Req, Opts) -> case maps:is_key(multipart, Req) of @@ -482,9 +482,10 @@ read_part(Buffer, Opts, Req=#{multipart := {Boundary, _}}) -> {more, Buffer2} -> {Data, Req2} = stream_multipart(Req, Opts), read_part(<< Buffer2/binary, Data/binary >>, Opts, Req2); - {ok, Headers, Rest} -> - %% @todo We may want headers as a map. Need to check the - %% rules for multipart header parsing before taking a decision. + {ok, Headers0, Rest} -> + Headers = maps:from_list(Headers0), + %% Reject multipart content containing duplicate headers. + true = map_size(Headers) =:= length(Headers0), {ok, Headers, Req#{multipart => {Boundary, Rest}}}; %% Ignore epilogue. {done, _} -> |