Files
gitea-pages/pkg/utils/resp.go
2025-11-19 15:56:32 +08:00

48 lines
904 B
Go

package utils
import (
"bufio"
"net"
"net/http"
"github.com/pkg/errors"
)
type WrittenResponseWriter struct {
write bool
base http.ResponseWriter
}
func NewWrittenResponseWriter(base http.ResponseWriter) *WrittenResponseWriter {
return &WrittenResponseWriter{
base: base,
write: false,
}
}
func (w *WrittenResponseWriter) Header() http.Header {
return w.base.Header()
}
func (w *WrittenResponseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) {
w.write = true
if hijacker, ok := w.base.(http.Hijacker); ok {
return hijacker.Hijack()
}
return nil, nil, errors.New("not hijackable")
}
func (w *WrittenResponseWriter) Write(b []byte) (int, error) {
w.write = true
return w.base.Write(b)
}
func (w *WrittenResponseWriter) WriteHeader(statusCode int) {
w.write = true
w.base.WriteHeader(statusCode)
}
func (w *WrittenResponseWriter) IsWritten() bool {
return w.write
}