1
0
Fork 0
mirror of https://git.sr.ht/~adnano/go-gemini synced 2024-05-13 03:06:10 +02:00

Don't guarantee that (*Response).Body is always non-nil

This commit is contained in:
Adnan Maolood 2020-11-08 18:38:08 -05:00
parent 6b3cf1314b
commit 5332dc6280
3 changed files with 5 additions and 7 deletions

5
doc.go
View File

@ -7,7 +7,10 @@ Get makes a Gemini request:
if err != nil {
// handle error
}
defer resp.Body.Close()
if resp.Status.Class() == gemini.StatusClassSucess {
defer resp.Body.Close()
// ...
}
// ...
For control over client behavior, create a Client:

View File

@ -80,9 +80,9 @@ func main() {
fmt.Println(err)
os.Exit(1)
}
defer resp.Body.Close()
if resp.Status.Class() == gemini.StatusClassSuccess {
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)

View File

@ -2,10 +2,8 @@ package gemini
import (
"bufio"
"bytes"
"crypto/tls"
"io"
"io/ioutil"
"strconv"
)
@ -21,7 +19,6 @@ type Response struct {
Meta string
// Body contains the response body for successful responses.
// Body is guaranteed to be non-nil.
Body io.ReadCloser
// Request is the request that was sent to obtain this response.
@ -86,8 +83,6 @@ func (resp *Response) read(rc io.ReadCloser) error {
if resp.Status.Class() == StatusClassSuccess {
resp.Body = newReadCloserBody(br, rc)
} else {
resp.Body = ioutil.NopCloser(bytes.NewReader([]byte{}))
}
return nil
}