|
@@ -1,6 +1,7 @@
|
|
package main
|
|
package main
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
+ "bufio"
|
|
"bytes"
|
|
"bytes"
|
|
"errors"
|
|
"errors"
|
|
"fmt"
|
|
"fmt"
|
|
@@ -20,13 +21,13 @@ var downloadClient = http.Client{
|
|
}
|
|
}
|
|
|
|
|
|
type netReader struct {
|
|
type netReader struct {
|
|
- reader io.Reader
|
|
|
|
|
|
+ reader *bufio.Reader
|
|
buf *bytes.Buffer
|
|
buf *bytes.Buffer
|
|
}
|
|
}
|
|
|
|
|
|
func newNetReader(r io.Reader) *netReader {
|
|
func newNetReader(r io.Reader) *netReader {
|
|
return &netReader{
|
|
return &netReader{
|
|
- reader: r,
|
|
|
|
|
|
+ reader: bufio.NewReader(r),
|
|
buf: bytes.NewBuffer([]byte{}),
|
|
buf: bytes.NewBuffer([]byte{}),
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -39,6 +40,10 @@ func (r *netReader) Read(p []byte) (n int, err error) {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+func (r *netReader) Peek(n int) ([]byte, error) {
|
|
|
|
+ return r.reader.Peek(n)
|
|
|
|
+}
|
|
|
|
+
|
|
func (r *netReader) ReadAll() ([]byte, error) {
|
|
func (r *netReader) ReadAll() ([]byte, error) {
|
|
if _, err := r.buf.ReadFrom(r.reader); err != nil {
|
|
if _, err := r.buf.ReadFrom(r.reader); err != nil {
|
|
return []byte{}, err
|
|
return []byte{}, err
|