From 2f14203efe0514cd4b64085efe9cc5980a276983 Mon Sep 17 00:00:00 2001 From: siddharth ravikumar Date: Sun, 12 Jun 2022 19:51:32 -0400 Subject: search: move search stuff to its own package --- search/search.go | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 search/search.go (limited to 'search') 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 +// 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 +} -- cgit v1.2.3