38 lines
593 B
Go
38 lines
593 B
Go
package proxy
|
|
|
|
import (
|
|
"bufio"
|
|
"io"
|
|
"net"
|
|
)
|
|
|
|
type bufferedConn struct {
|
|
net.Conn
|
|
reader io.Reader
|
|
}
|
|
|
|
func (c *bufferedConn) Read(p []byte) (int, error) {
|
|
return c.reader.Read(p)
|
|
}
|
|
|
|
func wrapBufferedConn(conn net.Conn, readWriter *bufio.ReadWriter) net.Conn {
|
|
if readWriter == nil {
|
|
return conn
|
|
}
|
|
|
|
return &bufferedConn{Conn: conn, reader: readWriter}
|
|
}
|
|
|
|
type previewReadCloser struct {
|
|
io.ReadCloser
|
|
preview *bodyPreview
|
|
}
|
|
|
|
func (p *previewReadCloser) Read(data []byte) (int, error) {
|
|
n, err := p.ReadCloser.Read(data)
|
|
if n > 0 {
|
|
p.preview.Write(data[:n])
|
|
}
|
|
return n, err
|
|
}
|