From 78bb67fbf79bce6abed9d4e416ca1d10ed7dc12b Mon Sep 17 00:00:00 2001 From: Jason Cameron Date: Tue, 22 Apr 2025 20:31:19 -0400 Subject: fix: improve error handling and create the json encoder once #331 (#332) * fix: improve error handling for resource closing and JSON encoding in MakeChallenge * chore: update CHANGELOG with recent changes and improvements * refactor: simplify RenderIndex function and improve error handling --------- Signed-off-by: Jason Cameron --- internal/headers.go | 2 +- internal/ogtags/fetch.go | 8 +++++++- internal/test/playwright_test.go | 8 ++++---- 3 files changed, 12 insertions(+), 6 deletions(-) (limited to 'internal') diff --git a/internal/headers.go b/internal/headers.go index bdb5e9e..eb7778b 100644 --- a/internal/headers.go +++ b/internal/headers.go @@ -73,7 +73,7 @@ func NoStoreCache(next http.Handler) http.Handler { }) } -// Do not allow browsing directory listings in paths that end with / +// NoBrowsing prevents directory browsing by returning a 404 for any request that ends with a "/". func NoBrowsing(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if strings.HasSuffix(r.URL.Path, "/") { diff --git a/internal/ogtags/fetch.go b/internal/ogtags/fetch.go index d4db711..7e02eca 100644 --- a/internal/ogtags/fetch.go +++ b/internal/ogtags/fetch.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "golang.org/x/net/html" + "io" "log/slog" "mime" "net" @@ -26,7 +27,12 @@ func (c *OGTagCache) fetchHTMLDocument(urlStr string) (*html.Node, error) { return nil, fmt.Errorf("http get failed: %w", err) } // this defer will call MaxBytesReader's Close, which closes the original body. - defer resp.Body.Close() + defer func(Body io.ReadCloser) { + err := Body.Close() + if err != nil { + slog.Debug("og: error closing response body", "url", urlStr, "error", err) + } + }(resp.Body) if resp.StatusCode != http.StatusOK { slog.Debug("og: received non-OK status code", "url", urlStr, "status", resp.StatusCode) diff --git a/internal/test/playwright_test.go b/internal/test/playwright_test.go index 69652ce..8656f76 100644 --- a/internal/test/playwright_test.go +++ b/internal/test/playwright_test.go @@ -378,14 +378,14 @@ func pwFail(t *testing.T, page playwright.Page, format string, args ...any) erro } func pwTimeout(tc testCase, deadline time.Time) *float64 { - max := *playwrightMaxTime + maxTime := *playwrightMaxTime if tc.isHard { - max = *playwrightMaxHardTime + maxTime = *playwrightMaxHardTime } d := time.Until(deadline) - if d <= 0 || d > max { - return playwright.Float(float64(max.Milliseconds())) + if d <= 0 || d > maxTime { + return playwright.Float(float64(maxTime.Milliseconds())) } return playwright.Float(float64(d.Milliseconds())) } -- cgit v1.2.3