From 6b8e43cc39b38d7932061f7d8864c075eeb41934 Mon Sep 17 00:00:00 2001 From: feistel <6742251-feistel@users.noreply.gitlab.com> Date: Thu, 8 Jul 2021 11:31:16 +0200 Subject: refactor: parse custom headers using ReadMIMEHeader --- internal/customheaders/customheaders.go | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'internal') diff --git a/internal/customheaders/customheaders.go b/internal/customheaders/customheaders.go index b54df585..f80d7f9a 100644 --- a/internal/customheaders/customheaders.go +++ b/internal/customheaders/customheaders.go @@ -1,8 +1,10 @@ package customheaders import ( + "bufio" "errors" "net/http" + "net/textproto" "strings" ) @@ -21,15 +23,16 @@ func AddCustomHeaders(w http.ResponseWriter, headers http.Header) { func ParseHeaderString(customHeaders []string) (http.Header, error) { headers := http.Header{} for _, keyValueString := range customHeaders { - keyValue := strings.SplitN(keyValueString, ":", 2) - if len(keyValue) != 2 { + keyValueString = strings.TrimSpace(keyValueString) + "\n\n" + tp := textproto.NewReader(bufio.NewReader(strings.NewReader(keyValueString))) + keyValue, err := tp.ReadMIMEHeader() + if err != nil { return nil, errInvalidHeaderParameter } - key := strings.TrimSpace(keyValue[0]) - value := strings.TrimSpace(keyValue[1]) - - headers[key] = append(headers[key], value) + for k, v := range keyValue { + headers[k] = append(headers[k], v...) + } } return headers, nil } -- cgit v1.2.3