File size: 878 Bytes
7107f0b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
package webdav
import (
"net/http"
)
type bufferedResponseWriter struct {
statusCode int
data []byte
header http.Header
}
func (w *bufferedResponseWriter) Header() http.Header {
if w.header == nil {
w.header = make(http.Header)
}
return w.header
}
func (w *bufferedResponseWriter) Write(bytes []byte) (int, error) {
w.data = append(w.data, bytes...)
return len(bytes), nil
}
func (w *bufferedResponseWriter) WriteHeader(statusCode int) {
if w.statusCode == 0 {
w.statusCode = statusCode
}
}
func (w *bufferedResponseWriter) WriteToResponse(rw http.ResponseWriter) (int, error) {
h := rw.Header()
for k, vs := range w.header {
for _, v := range vs {
h.Add(k, v)
}
}
rw.WriteHeader(w.statusCode)
return rw.Write(w.data)
}
func newBufferedResponseWriter() *bufferedResponseWriter {
return &bufferedResponseWriter{
statusCode: 0,
}
}
|