From 42c1ec991629b385ff71336ba5d138d458166b31 Mon Sep 17 00:00:00 2001 From: Bryan Frimin Date: Wed, 30 Apr 2025 09:39:49 -0700 Subject: [PATCH] Configure gzip static response Signed-off-by: Bryan Frimin --- pkg/server/web/web.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/pkg/server/web/web.go b/pkg/server/web/web.go index d164b3f17..7d7894808 100644 --- a/pkg/server/web/web.go +++ b/pkg/server/web/web.go @@ -15,9 +15,11 @@ package web import ( + "compress/gzip" "crypto/md5" "encoding/hex" "fmt" + "io" "io/fs" "net/http" "strings" @@ -132,6 +134,23 @@ func (s *Server) ServeSPA(w http.ResponseWriter, r *http.Request) { w.Write(s.indexContent) } +type gzipResponseWriter struct { + io.Writer + http.ResponseWriter +} + +func (w gzipResponseWriter) Write(b []byte) (int, error) { + return w.Writer.Write(b) +} + func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { + if strings.Contains(r.Header.Get("Accept-Encoding"), "gzip") { + w.Header().Set("Content-Encoding", "gzip") + gz := gzip.NewWriter(w) + defer gz.Close() + s.ServeSPA(gzipResponseWriter{Writer: gz, ResponseWriter: w}, r) + return + } + s.ServeSPA(w, r) }