mirror of https://github.com/Xhofe/alist
				
				
				
			
		
			
				
	
	
		
			47 lines
		
	
	
		
			878 B
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			878 B
		
	
	
	
		
			Go
		
	
	
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,
 | 
						|
	}
 | 
						|
}
 |