github.com/aleksi/gonuts.io@v0.0.0-20130622121132-3b0f2d1999fb/app/gonuts/controllers/ah.go (about) 1 package controllers 2 3 import ( 4 "appengine" 5 "appengine/datastore" 6 "fmt" 7 "net/http" 8 "runtime" 9 "time" 10 11 "gonuts" 12 ) 13 14 func ahHandler(c appengine.Context, w http.ResponseWriter, r *http.Request) { 15 d := make(ContentData) 16 17 go func() { 18 for i := 0; i < 5; i++ { 19 c.Debugf("Hello from _ah %d", i) 20 time.Sleep(time.Second) 21 } 22 }() 23 24 d["Message"] = "Hello from _ah." 25 ServeJSON(w, http.StatusOK, d) 26 return 27 } 28 29 func ahStatusHandler(c appengine.Context, w http.ResponseWriter, r *http.Request) { 30 d := make(ContentData) 31 32 d["Message"] = "OK" 33 d["Version"] = runtime.Version() 34 d["GOARCH"] = runtime.GOARCH 35 d["GOOS"] = runtime.GOOS 36 d["GOMAXPROCS"] = runtime.GOMAXPROCS(-1) 37 d["NumCPU"] = runtime.NumCPU() 38 ServeJSON(w, http.StatusOK, d) 39 return 40 } 41 42 func ahCronSearchHandler(c appengine.Context, w http.ResponseWriter, r *http.Request) { 43 start := time.Now() 44 d := make(ContentData) 45 46 var nut gonuts.Nut 47 for i := datastore.NewQuery("Nut").Run(c); ; { 48 _, err := i.Next(&nut) 49 if err == datastore.Done { 50 break 51 } 52 if err == nil { 53 err = gonuts.AddToSearchIndex(c, &nut) 54 } 55 if err != nil { 56 gonuts.LogError(c, err) 57 ServeJSONError(w, http.StatusInternalServerError, err, d) 58 return 59 } 60 } 61 62 m := fmt.Sprintf("Search index updated in %d seconds.", time.Since(start)/time.Second) 63 c.Infof("%s", m) 64 d["Message"] = m 65 ServeJSON(w, http.StatusOK, d) 66 return 67 }