diff options
Diffstat (limited to 'pkg/handler/static')
| -rw-r--r-- | pkg/handler/static/handler.go | 22 | 
1 files changed, 16 insertions, 6 deletions
diff --git a/pkg/handler/static/handler.go b/pkg/handler/static/handler.go index 779c786..6cc884e 100644 --- a/pkg/handler/static/handler.go +++ b/pkg/handler/static/handler.go @@ -1,6 +1,7 @@  package static  import ( +	"bytes"  	"fmt"  	"io"  	"io/fs" @@ -45,23 +46,32 @@ func ServeStaticCSSHandler(lightTheme, darkTheme string) (ext.ErrorRequestHandle  	return func(w http.ResponseWriter, r *ext.Request) error {  		ext.SetMIME(w, "text/css") +		w.Header().Add("Cache-Control", "max-age=31536000") + +		// use buffer so this function can fail before writing to http.ResponseWriter +		var buffer bytes.Buffer  		var style *chroma.Style  		style = darkStyle -		w.Write([]byte("[data-bs-theme=\"dark\"] {\n")) -		err := formatter.WriteCSS(&ws{w}, style) +		buffer.Write([]byte("[data-bs-theme=\"dark\"] {\n")) +		err := formatter.WriteCSS(&ws{&buffer}, style)  		if err != nil {  			return err  		} -		w.Write([]byte("}\n")) +		buffer.Write([]byte("}\n"))  		style = lightStyle -		w.Write([]byte("[data-bs-theme=\"light\"] {\n")) -		err = formatter.WriteCSS(&ws{w}, style) +		buffer.Write([]byte("[data-bs-theme=\"light\"] {\n")) +		err = formatter.WriteCSS(&ws{&buffer}, style) +		if err != nil { +			return err +		} +		buffer.Write([]byte("}")) + +		_, err = io.Copy(w, &buffer)  		if err != nil {  			return err  		} -		w.Write([]byte("\n}"))  		return nil  	}, nil  | 
