From 29690502f0d2b275ba4a29bbfa4e09686f7f701f Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Wed, 15 Jan 2020 10:36:21 +0100 Subject: [PATCH] cmd/strelaypoolsrv: Serve gzip compressed responses --- cmd/strelaypoolsrv/main.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/cmd/strelaypoolsrv/main.go b/cmd/strelaypoolsrv/main.go index da3f7f08f..69b6ba026 100644 --- a/cmd/strelaypoolsrv/main.go +++ b/cmd/strelaypoolsrv/main.go @@ -12,6 +12,7 @@ import ( "encoding/json" "flag" "fmt" + "io" "io/ioutil" "log" "mime" @@ -364,8 +365,8 @@ func handleRequest(w http.ResponseWriter, r *http.Request) { } } -func handleGetRequest(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json; charset=utf-8") +func handleGetRequest(rw http.ResponseWriter, r *http.Request) { + rw.Header().Set("Content-Type", "application/json; charset=utf-8") mut.RLock() relays := append(permanentRelays, knownRelays...) mut.RUnlock() @@ -373,7 +374,15 @@ func handleGetRequest(w http.ResponseWriter, r *http.Request) { // Shuffle rand.Shuffle(relays) - json.NewEncoder(w).Encode(map[string][]*relay{ + w := io.Writer(rw) + if strings.Contains(r.Header.Get("Accept-Encoding"), "gzip") { + rw.Header().Set("Content-Encoding", "gzip") + gw := gzip.NewWriter(rw) + defer gw.Close() + w = gw + } + + _ = json.NewEncoder(w).Encode(map[string][]*relay{ "relays": relays, }) }