From b144fa25a8a3cf325689c8c73236ab649b7a69d4 Mon Sep 17 00:00:00 2001 From: jet2tlf Date: Mon, 3 Jun 2024 14:09:52 -0300 Subject: codecrafters submit [skip ci] --- app/router.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'app/router.go') diff --git a/app/router.go b/app/router.go index 9296de2..01e49d1 100644 --- a/app/router.go +++ b/app/router.go @@ -2,11 +2,14 @@ package main import ( "bufio" + "bytes" + "compress/gzip" "fmt" "io" "net" "regexp" "slices" + "strconv" "strings" ) @@ -28,7 +31,20 @@ func (r *Router) handler(request *Request) func(*Request) *Response { func (r *Router) write(writer io.Writer, response *Response, request *Request) (err error) { if slices.Contains(strings.Split(request.Header("Accept-Encoding"), ", "), "gzip") { + var b bytes.Buffer + + gz := gzip.NewWriter(&b) + if _, err := gz.Write(response.body); err != nil { + panic(err) + } + + if err := gz.Close(); err != nil { + panic(err) + } + + response.headers["Content-Length"] = strconv.Itoa(b.Len()) response.headers["Content-Encoding"] = "gzip" + response.body = b.Bytes() } _, err = writer.Write(response.StatusLine()) -- cgit v1.2.3