diff --git a/app/http.go b/app/http.go index f474f14..ff436d0 100644 --- a/app/http.go +++ b/app/http.go @@ -67,6 +67,9 @@ func Respond(conn net.Conn, req Request, res Response) { if res.Headers == nil { res.Headers = make(map[string]string) } + if req.Headers["Accept-Encoding"] == "gzip" { + res.Headers["Content-Encoding"] = "gzip" + } fmt.Fprintf(conn, "%s %d %s%s", res.Version, res.Code.Code, res.Code.Message, HTTPDelimiter) bodySize := 0 @@ -82,10 +85,6 @@ func Respond(conn net.Conn, req Request, res Response) { fmt.Fprintf(conn, "%s: %s%s", header, value, HTTPDelimiter) } - if req.Headers["Accept-Encoding"] == "gzip" { - res.Headers["Content-Encoding"] = "gzip" - } - fmt.Fprint(conn, HTTPDelimiter) if bodySize > 0 { if res.Body != "" { diff --git a/app/server_test.go b/app/server_test.go index fda4f5b..988a196 100644 --- a/app/server_test.go +++ b/app/server_test.go @@ -66,19 +66,19 @@ func TestEcho(t *testing.T) { }}) } -// func TestEchoGzip(t *testing.T) { -// input := "abc" -// req, _ := http.NewRequest("GET", fmt.Sprintf("http://localhost:4221/echo/%s", input), nil) -// req.Header.Set("Accept-Encoding", "gzip") -// client := &http.Client{} -// res, _ := client.Do(req) +func TestEchoGzip(t *testing.T) { + input := "abc" + req, _ := http.NewRequest("GET", fmt.Sprintf("http://localhost:4221/echo/%s", input), nil) + req.Header.Set("Accept-Encoding", "gzip") + client := &http.Client{} + res, _ := client.Do(req) -// checkResponse(t, res, Expected{status: 200, body: input, headers: map[string]string{ -// // "Content-Length": strconv.Itoa(len(input)), -// "Content-Type": "text/plain", -// "Content-Encoding": "gzip", -// }}) -// } + checkResponse(t, res, Expected{status: 200, body: input, headers: map[string]string{ + "Content-Length": strconv.Itoa(len(input)), + "Content-Type": "text/plain", + "Content-Encoding": "gzip", + }}) +} func TestUserAgent(t *testing.T) { input := "CodeCrafters/1.0"