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, | |
} | |
} | |