add gzip support

This commit is contained in:
6543 2022-08-28 21:30:10 +02:00
parent 16a8d5d575
commit fac052f052
No known key found for this signature in database
GPG key ID: C99B82E40B027BAE
3 changed files with 43 additions and 11 deletions

37
server/gzip/gzip.go Normal file
View file

@ -0,0 +1,37 @@
package gzip
import (
"compress/gzip"
"net/http"
"strings"
)
type gzipResponseWriter struct {
Writer *gzip.Writer
ResponseWriter http.ResponseWriter
}
func (gz gzipResponseWriter) Header() http.Header {
return gz.ResponseWriter.Header()
}
func (gz gzipResponseWriter) Write(b []byte) (int, error) {
return gz.Writer.Write(b)
}
func (gz gzipResponseWriter) WriteHeader(statusCode int) {
gz.ResponseWriter.WriteHeader(statusCode)
}
func SetupCompression(handler http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
if !strings.Contains(r.Header.Get("Accept-Encoding"), "gzip") {
handler(w, r)
return
}
w.Header().Set("Content-Encoding", "gzip")
gz := gzip.NewWriter(w)
defer gz.Close()
handler(gzipResponseWriter{Writer: gz, ResponseWriter: w}, r)
}
}

View file

@ -9,11 +9,6 @@ import (
"codeberg.org/codeberg/pages/server/utils"
)
func SetupServer(handler http.HandlerFunc) http.HandlerFunc {
// TODO: enagle gzip compression
return handler
}
func SetupHTTPACMEChallengeServer(challengeCache cache.SetGetKey) http.HandlerFunc {
challengePath := "/.well-known/acme-challenge/"