From 43ed487c0e11c5a93c17f657e40d8194903c8795 Mon Sep 17 00:00:00 2001 From: Spiegel Date: Sat, 9 May 2026 21:37:33 +0900 Subject: [PATCH] refactor: use local body variables in response handling --- client.go | 4 ++-- response.go | 14 ++++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/client.go b/client.go index 6555d3f..1c74b32 100644 --- a/client.go +++ b/client.go @@ -50,7 +50,7 @@ func (c *client) GetWithContext(ctx context.Context, u *url.URL, opts ...Request req, err := request(ctx, http.MethodGet, u, nil, opts...) if err != nil { if errors.Is(err, ErrInvalidURL) { - return nil, errs.Wrap(ErrInvalidURL, errs.WithCause(err), errs.WithContext("url", urlText(u))) + return nil, errs.Wrap(err, errs.WithContext("url", urlText(u))) } return nil, errs.Wrap(ErrInvalidRequest, errs.WithCause(err), errs.WithContext("url", urlText(u))) } @@ -72,7 +72,7 @@ func (c *client) PostWithContext(ctx context.Context, u *url.URL, payload io.Rea req, err := request(ctx, http.MethodPost, u, payload, opts...) if err != nil { if errors.Is(err, ErrInvalidURL) { - return nil, errs.Wrap(ErrInvalidURL, errs.WithCause(err), errs.WithContext("url", urlText(u))) + return nil, errs.Wrap(err, errs.WithContext("url", urlText(u))) } return nil, errs.Wrap(ErrInvalidRequest, errs.WithCause(err), errs.WithContext("url", urlText(u))) } diff --git a/response.go b/response.go index 4342344..d81dfb0 100644 --- a/response.go +++ b/response.go @@ -42,15 +42,16 @@ func (resp *response) Close() (err error) { if resp == nil || resp.Response == nil { return nil } + body := resp.Body() defer func() { - if resp == nil { + if body == nil { return } - if cerr := resp.Body().Close(); cerr != nil { + if cerr := body.Close(); cerr != nil && !errs.Is(cerr, os.ErrClosed) { err = errs.Join(cerr, err) } }() - _, err = io.Copy(io.Discard, resp.Body()) + _, err = io.Copy(io.Discard, body) // drain body to reuse connection err = errs.Wrap(err) return } @@ -60,15 +61,16 @@ func (resp *response) DumpBodyAndClose() (b []byte, err error) { err = errs.Wrap(ErrNullPointer) return } + body := resp.Body() defer func() { - if resp == nil { + if body == nil { return } - if cerr := resp.Body().Close(); cerr != nil && !errs.Is(cerr, os.ErrClosed) { + if cerr := body.Close(); cerr != nil && !errs.Is(cerr, os.ErrClosed) { err = errs.Join(cerr, err) } }() - b, err = io.ReadAll(resp.Body()) + b, err = io.ReadAll(body) err = errs.Wrap(err) return }