diff options
author | siddharth ravikumar <s@ricketyspace.net> | 2022-06-12 19:51:32 -0400 |
---|---|---|
committer | siddharth ravikumar <s@ricketyspace.net> | 2022-06-12 19:51:32 -0400 |
commit | 2f14203efe0514cd4b64085efe9cc5980a276983 (patch) | |
tree | 1e5f9b1132a71f7308e71340939ea1b6f181a372 | |
parent | 2726d7d51bb89c0ab41783ab359b5ed7ad29a758 (diff) |
search: move search stuff to its own package
-rw-r--r-- | main.go | 46 | ||||
-rw-r--r-- | search/search.go | 56 |
2 files changed, 58 insertions, 44 deletions
@@ -12,9 +12,9 @@ import ( "net/http" "regexp" "strconv" - "strings" "ricketyspace.net/peach/photon" + "ricketyspace.net/peach/search" "ricketyspace.net/peach/version" "ricketyspace.net/peach/weather" ) @@ -35,14 +35,6 @@ var peachTemplates = template.Must(template.ParseFS(peachFS, "templates/*.tmpl") // Lat,Long regex. var latLngRegex = regexp.MustCompile(`/(-?[0-9]+\.?[0-9]+?),(-?[0-9]+\.?[0-9]+)`) -type Search struct { - Title string - Version string - Location string - Message string - MatchingCoords []photon.Coordinates -} - func init() { flag.Parse() if *peachPort < 80 { @@ -116,7 +108,7 @@ func showSearch(w http.ResponseWriter, r *http.Request) { return } - search, err := NewSearch(r) + search, err := search.NewSearch(r) if err != nil { http.Error(w, err.Error(), 500) return @@ -139,40 +131,6 @@ func serveStaticFile(w http.ResponseWriter, r *http.Request) { server.ServeHTTP(w, r) } -func NewSearch(r *http.Request) (*Search, error) { - s := new(Search) - s.Title = "search" - s.Version = version.Version - - if r.Method == "GET" { - return s, nil - } - - // Get location. - err := r.ParseForm() - if err != nil { - return s, fmt.Errorf("form: %v", err) - } - location := strings.TrimSpace(r.PostForm.Get("location")) - s.Location = location - if len(location) < 2 { - s.Message = "location invalid" - } - - // Try to fetch matching coordinates. - s.MatchingCoords, err = photon.Geocode(location) - if err != nil { - log.Printf("search: geocode: %v", err) - s.Message = "unable to lookup location" - return s, nil - } - if len(s.MatchingCoords) < 1 { - s.Message = "location not found" - return s, nil - } - return s, nil -} - func logRequest(r *http.Request) { addr := r.RemoteAddr if len(r.Header.Get("X-Forwarded-For")) > 0 { diff --git a/search/search.go b/search/search.go new file mode 100644 index 0000000..1b297c3 --- /dev/null +++ b/search/search.go @@ -0,0 +1,56 @@ +// Copyright © 2022 siddharth ravikumar <s@ricketyspace.net> +// SPDX-License-Identifier: ISC + +package search + +import ( + "fmt" + "log" + "net/http" + "strings" + + "ricketyspace.net/peach/photon" + "ricketyspace.net/peach/version" +) + +type Search struct { + Title string + Version string + Location string + Message string + MatchingCoords []photon.Coordinates +} + +func NewSearch(r *http.Request) (*Search, error) { + s := new(Search) + s.Title = "search" + s.Version = version.Version + + if r.Method == "GET" { + return s, nil + } + + // Get location. + err := r.ParseForm() + if err != nil { + return s, fmt.Errorf("form: %v", err) + } + location := strings.TrimSpace(r.PostForm.Get("location")) + s.Location = location + if len(location) < 2 { + s.Message = "location invalid" + } + + // Try to fetch matching coordinates. + s.MatchingCoords, err = photon.Geocode(location) + if err != nil { + log.Printf("search: geocode: %v", err) + s.Message = "unable to lookup location" + return s, nil + } + if len(s.MatchingCoords) < 1 { + s.Message = "location not found" + return s, nil + } + return s, nil +} |