From f32bcf12886ac963c9e8cf4d0f27dd0c1696ede8 Mon Sep 17 00:00:00 2001 From: mkelvers Date: Thu, 11 Jun 2026 11:25:51 +0200 Subject: [PATCH] fix: close response body in FetchHTMLDocument --- integrations/animeschedule/animeschedule.go | 6 +++--- pkg/net/document.go | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/integrations/animeschedule/animeschedule.go b/integrations/animeschedule/animeschedule.go index e21c181..aa2a489 100644 --- a/integrations/animeschedule/animeschedule.go +++ b/integrations/animeschedule/animeschedule.go @@ -346,7 +346,7 @@ func addCommonHeaders(request *http.Request) { } func fetchDocument(ctx context.Context, httpClient *http.Client, url string) (*goquery.Document, string, error) { - document, response, err := netutil.FetchHTMLDocument(ctx, httpClient, url, addCommonHeaders, func(response *http.Response, body []byte) error { + document, finalURL, err := netutil.FetchHTMLDocument(ctx, httpClient, url, addCommonHeaders, func(response *http.Response, body []byte) error { return &HTTPStatusError{ StatusCode: response.StatusCode, URL: url, @@ -355,10 +355,10 @@ func fetchDocument(ctx context.Context, httpClient *http.Client, url string) (*g } }) if err != nil { - return nil, url, err + return nil, finalURL, err } - return document, response.Request.URL.String(), nil + return document, finalURL, nil } type timetableAnimeAPI struct { diff --git a/pkg/net/document.go b/pkg/net/document.go index 02eebff..8d664e3 100644 --- a/pkg/net/document.go +++ b/pkg/net/document.go @@ -15,7 +15,7 @@ func FetchHTMLDocument( url string, prepareRequest func(*http.Request), buildStatusError func(*http.Response, []byte) error, -) (*goquery.Document, *http.Response, error) { +) (*goquery.Document, string, error) { client := httpClient if client == nil { client = http.DefaultClient @@ -23,7 +23,7 @@ func FetchHTMLDocument( request, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) if err != nil { - return nil, nil, fmt.Errorf("failed to create request: %w", err) + return nil, "", fmt.Errorf("failed to create request: %w", err) } if prepareRequest != nil { prepareRequest(request) @@ -31,19 +31,19 @@ func FetchHTMLDocument( response, err := client.Do(request) if err != nil { - return nil, nil, fmt.Errorf("request failed: %w", err) + return nil, "", fmt.Errorf("request failed: %w", err) } defer func() { _ = response.Body.Close() }() if response.StatusCode != http.StatusOK { body, _ := io.ReadAll(io.LimitReader(response.Body, Bytes512)) - return nil, response, buildStatusError(response, body) + return nil, response.Request.URL.String(), buildStatusError(response, body) } document, err := goquery.NewDocumentFromReader(response.Body) if err != nil { - return nil, response, fmt.Errorf("failed to parse html: %w", err) + return nil, response.Request.URL.String(), fmt.Errorf("failed to parse html: %w", err) } - return document, response, nil + return document, response.Request.URL.String(), nil }