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