package gziphttp import ( "compress/gzip" "net/http" ) type GZipResponseWriter struct { w http.ResponseWriter gz *gzip.Writer } func New(w http.ResponseWriter) *GZipResponseWriter { w.Header().Add("Content-Type", "text/html") w.Header().Add("Content-Encoding", "gzip") return &GZipResponseWriter{ w: w, gz: gzip.NewWriter(w), } } func (gz *GZipResponseWriter) Header() http.Header { return gz.w.Header() } func (gz *GZipResponseWriter) WriteHeader(statusCode int) { gz.w.WriteHeader(statusCode) } func (gz *GZipResponseWriter) Write(b []byte) (int, error) { return gz.gz.Write(b) } func (gz *GZipResponseWriter) Close() error { return gz.gz.Close() }