aboutsummaryrefslogtreecommitdiff
path: root/response.go
diff options
context:
space:
mode:
authorAdnan Maolood <[email protected]>2021-02-23 20:49:42 -0500
committerAdnan Maolood <[email protected]>2021-02-23 20:49:55 -0500
commite8d98ef4ec9dd9b6fd4f0a67c4ef531485354bee (patch)
tree0d4afa0e2df65848ecb5f7652928d107db716dec /response.go
parentMake ResponseWriter a struct (diff)
downloadgo-gemini-e8d98ef4ec9dd9b6fd4f0a67c4ef531485354bee.tar.xz
go-gemini-e8d98ef4ec9dd9b6fd4f0a67c4ef531485354bee.zip
Move I/O utilities to io.go
Diffstat (limited to 'response.go')
-rw-r--r--response.go39
1 files changed, 1 insertions, 38 deletions
diff --git a/response.go b/response.go
index 8c7febc..abbc757 100644
--- a/response.go
+++ b/response.go
@@ -81,7 +81,7 @@ func ReadResponse(rc io.ReadCloser) (*Response, error) {
}
if resp.Status.Class() == StatusSuccess {
- resp.body = newReadCloserBody(br, rc)
+ resp.body = newBufReadCloser(br, rc)
} else {
resp.body = nopReadCloser{}
rc.Close()
@@ -89,43 +89,6 @@ func ReadResponse(rc io.ReadCloser) (*Response, error) {
return resp, nil
}
-type nopReadCloser struct{}
-
-func (nopReadCloser) Read(p []byte) (int, error) {
- return 0, io.EOF
-}
-
-func (nopReadCloser) Close() error {
- return nil
-}
-
-type readCloserBody struct {
- br *bufio.Reader // used until empty
- io.ReadCloser
-}
-
-func newReadCloserBody(br *bufio.Reader, rc io.ReadCloser) io.ReadCloser {
- body := &readCloserBody{ReadCloser: rc}
- if br.Buffered() != 0 {
- body.br = br
- }
- return body
-}
-
-func (b *readCloserBody) Read(p []byte) (n int, err error) {
- if b.br != nil {
- if n := b.br.Buffered(); len(p) > n {
- p = p[:n]
- }
- n, err = b.br.Read(p)
- if b.br.Buffered() == 0 {
- b.br = nil
- }
- return n, err
- }
- return b.ReadCloser.Read(p)
-}
-
// Read reads data from the response body.
// The response body is streamed on demand as Read is called.
func (r *Response) Read(p []byte) (n int, err error) {