From db9ac7c28c43f9c6b1e894903d21addbdf87c7ba Mon Sep 17 00:00:00 2001 From: mkelvers Date: Fri, 3 Jul 2026 02:57:53 +0200 Subject: [PATCH] feat: add compression writer write method --- internal/server/static_delivery.go | 35 ++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/internal/server/static_delivery.go b/internal/server/static_delivery.go index 259d821e..01e9540a 100644 --- a/internal/server/static_delivery.go +++ b/internal/server/static_delivery.go @@ -343,3 +343,38 @@ func (w *compressionWriter) canCompress(data []byte) bool { addVary(w.Header(), "Accept-Encoding") return w.acceptsGzip } + +//nolint:unused +func (w *compressionWriter) Write(data []byte) (int, error) { + w.wroteBody = true + + switch w.mode { + case compressionPlain: + //nolint:staticcheck + return w.ResponseWriter.Write(data) + case compressionGzip: + return w.gzip.Write(data) + } + + if !w.canCompress(data) { + return w.writePlain(data) + } + + if compress, known := w.knownContentLength(); known { + if compress { + w.startGzip() + return w.gzip.Write(data) + } + return w.writePlain(data) + } + + if w.buffer.Len()+len(data) < compressionMinLength { + return w.buffer.Write(data) + } + + w.startGzip() + if err := w.flushBuffer(); err != nil { + return 0, err + } + return w.gzip.Write(data) +}