Simplify handling of http.Client response

As per the doc¹:

  If the returned error is nil, the Response will contain a non-nil Body which the user is expected to close.
  ...
  On error, any Response can be ignored. A non-nil Response with a non-nil error
  only occurs when CheckRedirect fails, and even then the returned Response.Body
  is already closed.

It is thus safe to defer res.Body.Close() as soon as err has been determined to
be nil.

Also, I've dispensed with the separate variable client, since it is not used
later.

¹: https://godoc.org/net/http#Client.Do
This commit is contained in:
pancho horrillo
2019-10-08 05:42:33 +02:00
parent 7ba54b32b3
commit 0cab49f082
+2 -7
View File
@@ -43,16 +43,11 @@ func Request(method string, url string, contentType string, r io.Reader, w io.Wr
req.Header.Add("Content-Type", contentType)
}
client := &http.Client{}
res, err := client.Do(req)
if res != nil {
defer res.Body.Close()
}
res, err := new(http.Client).Do(req)
if err != nil {
return err
}
defer res.Body.Close()
if res.StatusCode < 200 || res.StatusCode >= 300 {
return errors.New(GetReason(res))