From b4af38b274b1b91fef1d201ff712cfc0a938bd0f Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Fri, 27 Sep 2024 13:18:58 +0100 Subject: [PATCH] fix: check for cloudflare errors on search handler Closes #68 --- handlers/search.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/handlers/search.go b/handlers/search.go index 84dc494..3648681 100644 --- a/handlers/search.go +++ b/handlers/search.go @@ -5,6 +5,7 @@ import ( "fmt" "net/http" "net/url" + "strings" "github.com/rramiachraf/dumb/data" "github.com/rramiachraf/dumb/utils" @@ -20,19 +21,26 @@ func search(l *utils.Logger) http.HandlerFunc { if err != nil { l.Error(err.Error()) w.WriteHeader(http.StatusInternalServerError) - utils.RenderTemplate(w, views.ErrorPage(500, "cannot reach Genius servers"), l) + utils.RenderTemplate(w, views.ErrorPage(500, "cannot reach Genius servers."), l) return } defer res.Body.Close() + if strings.HasPrefix(res.Header.Get("content-type"), "text/html") { + w.WriteHeader(http.StatusInternalServerError) + utils.RenderTemplate(w, views.ErrorPage(500, "Cloudflare got in the way."), l) + return + } + var sRes data.SearchResponse d := json.NewDecoder(res.Body) if err = d.Decode(&sRes); err != nil { l.Error(err.Error()) w.WriteHeader(http.StatusInternalServerError) - utils.RenderTemplate(w, views.ErrorPage(500, "something went wrong"), l) + utils.RenderTemplate(w, views.ErrorPage(500, "something went wrong."), l) + return } results := data.SearchResults{Query: query, Sections: sRes.Response.Sections}