func NewWrapResponseWriter(w http.ResponseWriter, protoMajor int) WrapResponseWriter {
	_, fl := w.(http.Flusher)

	bw := basicWriter{ResponseWriter: w}

	if protoMajor == 2 {
		_, ps := w.(http.Pusher)
		if fl && ps {
			return &http2FancyWriter{bw}
		}
	} else {
		_, hj := w.(http.Hijacker)
		_, rf := w.(io.ReaderFrom)
		if fl && hj && rf {
			return &httpFancyWriter{bw}
		}
	}
	if fl {
		return &flushWriter{bw}
	}

	return &bw
}
func NewWrapResponseWriter(w http.ResponseWriter, protoMajor int) WrapResponseWriter {
	_, fl := w.(http.Flusher)

	bw := basicWriter{ResponseWriter: w}

	if protoMajor == 2 {
		_, ps := w.(http.Pusher)
		if fl && ps {
			return &http2FancyWriter{bw}
		}
	} else {
		_, hj := w.(http.Hijacker)
		_, rf := w.(io.ReaderFrom)
		if fl && hj && rf {
			return &httpFancyWriter{bw}
		}
	}
	if fl {
		return &flushWriter{bw}
	}

	return &bw
}
func NewWrapResponseWriter ( w http . ResponseWriter , protoMajor int ) WrapResponseWriter { _ , fl := w . ( http . Flusher ) bw := basicWriter { ResponseWriter : w } if protoMajor == 2 { _ , ps := w . ( http . Pusher ) if fl && ps { return & http2FancyWriter { bw } } } else { _ , hj := w . ( http . Hijacker ) _ , rf := w . ( io . ReaderFrom ) if fl && hj && rf { return & httpFancyWriter { bw } } } if fl { return & flushWriter { bw } } return & bw }
// NewWrapResponseWriter wraps an http.ResponseWriter, returning a proxy that allows you to
// hook into various parts of the response process.
NewWrapResponseWriter wraps an http . ResponseWriter returning a proxy that allows you to hook into various parts of the response process .