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  }