From 969dfe3fe300a59b977c8fdc43ea744f63477cf1 Mon Sep 17 00:00:00 2001 From: partisan Date: Tue, 21 May 2024 07:33:21 +0200 Subject: [PATCH] fixed search if "type" parameter is missing --- main.go | 71 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/main.go b/main.go index 8fe2a0a..585e98f 100644 --- a/main.go +++ b/main.go @@ -77,38 +77,7 @@ func main() { } func handleSearch(w http.ResponseWriter, r *http.Request) { - var query, safe, lang, searchType string - var page int - - if r.Method == "GET" { - query = r.URL.Query().Get("q") - safe = r.URL.Query().Get("safe") - lang = r.URL.Query().Get("lang") - searchType = r.URL.Query().Get("t") - pageStr := r.URL.Query().Get("p") - var err error - page, err = strconv.Atoi(pageStr) - if err != nil || page < 1 { - if debugMode { - log.Printf("Invalid page parameter: %v, defaulting to page 1", err) - } - page = 1 // Default to page 1 if no valid page is specified - } - } else if r.Method == "POST" { - query = r.FormValue("q") - safe = r.FormValue("safe") - lang = r.FormValue("lang") - searchType = r.FormValue("t") - pageStr := r.FormValue("p") - var err error - page, err = strconv.Atoi(pageStr) - if err != nil || page < 1 { - if debugMode { - log.Printf("Invalid page parameter: %v, defaulting to page 1", err) - } - page = 1 // Default to page 1 if no valid page is specified - } - } + query, safe, lang, searchType, page := parseSearchParams(r) if query == "" { http.ServeFile(w, r, "templates/search.html") @@ -116,15 +85,47 @@ func handleSearch(w http.ResponseWriter, r *http.Request) { } switch searchType { - case "text": - HandleTextSearch(w, query, safe, lang, page) case "image": handleImageSearch(w, query, safe, lang, page) case "video": videoSearchEndpointHandler(w, r) case "map": handleMapSearch(w, query, safe) + case "text": + fallthrough default: - http.ServeFile(w, r, "templates/search.html") + HandleTextSearch(w, query, safe, lang, page) } } + +func parseSearchParams(r *http.Request) (query, safe, lang, searchType string, page int) { + if r.Method == "GET" { + query = r.URL.Query().Get("q") + safe = r.URL.Query().Get("safe") + lang = r.URL.Query().Get("lang") + searchType = r.URL.Query().Get("t") + pageStr := r.URL.Query().Get("p") + page = parsePageParameter(pageStr) + } else if r.Method == "POST" { + query = r.FormValue("q") + safe = r.FormValue("safe") + lang = r.FormValue("lang") + searchType = r.FormValue("t") + pageStr := r.FormValue("p") + page = parsePageParameter(pageStr) + } + + if searchType == "" { + searchType = "text" + } + + return +} + +func parsePageParameter(pageStr string) int { + page, err := strconv.Atoi(pageStr) + if err != nil || page < 1 { + page = 1 + } + return page +}