From 9af49cd4cd6c2935528c23b2b2ac9dd5f1642f21 Mon Sep 17 00:00:00 2001 From: geeksilva97 Date: Fri, 19 Apr 2024 06:44:10 -0300 Subject: [PATCH] add base bitstring concat --- .tool-versions | 1 + src/cowboy_req.erl | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 .tool-versions diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 00000000..09d38677 --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +erlang 26.2.2 diff --git a/src/cowboy_req.erl b/src/cowboy_req.erl index 68efc9f4..da9579c4 100644 --- a/src/cowboy_req.erl +++ b/src/cowboy_req.erl @@ -729,11 +729,21 @@ set_resp_header(Name,Value, Req) -> % @todo process headers list - reduce to a map and concat the values of repeated headers, except for set-cookie that will be treated differently % @todo define the correct spec -spec set_resp_headers_list(list(term()), req()) -set_resp_headers_list([], Req) -> +set_resp_headers_list(HeaderTupleList, Req) -> + set_resp_headers_list(HeaderTupleList, #{}, Req). + +set_resp_headers_list([], Map, Req) -> + % @todo merge Map with Req headers Req; -set_resp_headers_list([{Name, Value} | Headers], Req) -> - Req1 = set_resp_header(Name, Value, Req), - set_resp_headers_list(Headers, Req1). +set_resp_headers_list([{Name, Value} | Headers], Map, Req) -> + NewHeaderValue = case maps:get(Name, Map, undefined) of + undefined -> Value, + ExistingValue -> <> + end, + + Map1 = maps:put(Name, NewHeaderValue, Map), + + set_resp_headers_list(Headers, Map1, Req1). -spec set_resp_headers(cowboy:http_headers(), Req) -> Req when Req::req().