diff options
-rw-r--r-- | main.go | 9 | ||||
-rw-r--r-- | search/search.go | 17 |
2 files changed, 14 insertions, 12 deletions
@@ -13,7 +13,6 @@ import ( "regexp" "strconv" - "ricketyspace.net/peach/photon" "ricketyspace.net/peach/search" "ricketyspace.net/peach/version" "ricketyspace.net/peach/weather" @@ -102,15 +101,13 @@ func showWeather(w http.ResponseWriter, lat, lng float32) { func showSearch(w http.ResponseWriter, r *http.Request) { logRequest(r) - // Search is disabled if photon is not enabled. - if !photon.Enabled() { + search, err, status := search.NewSearch(r) + if err != nil && status == 404 { http.NotFound(w, r) return } - - search, err := search.NewSearch(r) if err != nil { - http.Error(w, err.Error(), 500) + http.Error(w, err.Error(), status) return } err = peachTemplates.ExecuteTemplate(w, "search.tmpl", search) diff --git a/search/search.go b/search/search.go index 1b297c3..7e0d6e0 100644 --- a/search/search.go +++ b/search/search.go @@ -19,21 +19,26 @@ type Search struct { Location string Message string MatchingCoords []photon.Coordinates + Enabled bool } -func NewSearch(r *http.Request) (*Search, error) { +func NewSearch(r *http.Request) (*Search, error, int) { s := new(Search) s.Title = "search" s.Version = version.Version + s.Enabled = photon.Enabled() + if !s.Enabled { + return s, fmt.Errorf("search disabled"), 404 + } if r.Method == "GET" { - return s, nil + return s, nil, 200 } // Get location. err := r.ParseForm() if err != nil { - return s, fmt.Errorf("form: %v", err) + return s, fmt.Errorf("form: %v", err), 500 } location := strings.TrimSpace(r.PostForm.Get("location")) s.Location = location @@ -46,11 +51,11 @@ func NewSearch(r *http.Request) (*Search, error) { if err != nil { log.Printf("search: geocode: %v", err) s.Message = "unable to lookup location" - return s, nil + return s, nil, 200 } if len(s.MatchingCoords) < 1 { s.Message = "location not found" - return s, nil + return s, nil, 200 } - return s, nil + return s, nil, 200 } |