github.com/aleksi/gonuts.io@v0.0.0-20130622121132-3b0f2d1999fb/app/gonuts/controllers/base.go (about) 1 package controllers 2 3 import ( 4 "encoding/json" 5 _ "expvar" 6 "fmt" 7 "html/template" 8 "net/http" 9 _ "net/http/pprof" 10 11 "github.com/bmizerany/pat" 12 "github.com/mjibson/appstats" 13 "gonuts" 14 ) 15 16 type ContentData map[string]interface{} 17 18 type BaseData struct { 19 Tabtitle string 20 Title string 21 Subtitle string 22 Content template.HTML 23 } 24 25 func ServeJSON(w http.ResponseWriter, code int, d ContentData) { 26 b, err := json.Marshal(d) 27 gonuts.PanicIfErr(err) 28 w.Header().Set("Content-Type", "application/json") 29 w.WriteHeader(code) 30 _, err = w.Write(b) 31 gonuts.PanicIfErr(err) 32 } 33 34 func ServeJSONError(w http.ResponseWriter, code int, err error, d ContentData) { 35 d["Message"] = err.Error() 36 ServeJSON(w, code, d) 37 } 38 39 func WriteError(w http.ResponseWriter, code int, err error) { 40 w.WriteHeader(code) 41 _, err = w.Write([]byte(fmt.Sprintf("%s", err))) 42 gonuts.PanicIfErr(err) 43 } 44 45 var ( 46 Router = pat.New() 47 Base *template.Template 48 ) 49 50 func init() { 51 Router.Get("/_ah/cron/search", appstats.NewHandler(ahCronSearchHandler)) 52 Router.Get("/_ah/status", appstats.NewHandler(ahStatusHandler)) 53 Router.Get("/_ah/", appstats.NewHandler(ahHandler)) 54 55 Router.Get("/debug/prepare_test", appstats.NewHandler(debugPrepareTestHandler)) 56 57 Router.Get("/-/about", appstats.NewHandler(aboutHandler)) 58 Router.Get("/-/doc", appstats.NewHandler(docHandler)) 59 Router.Get("/-/doc/:section", appstats.NewHandler(docHandler)) 60 Router.Get("/-/me", appstats.NewHandler(myHandler)) 61 Router.Post("/-/me/register", appstats.NewHandler(registerHandler)) 62 Router.Get("/-/me/generate", appstats.NewHandler(generateHandler)) 63 Router.Post("/-/me/openid", appstats.NewHandler(openIdHandler)) 64 Router.Get("/-/nuts", appstats.NewHandler(nutsHandler)) 65 66 Router.Put("/:vendor/:name/:version", appstats.NewHandler(nutCreateHandler)) 67 Router.Get("/:vendor/:name/:version", appstats.NewHandler(nutShowHandler)) 68 Router.Get("/:vendor/:name", appstats.NewHandler(nutShowHandler)) 69 Router.Get("/:vendor", appstats.NewHandler(nutsHandler)) 70 71 Router.Get("/", appstats.NewHandler(welcomeHandler)) 72 73 http.Handle("/", Router) 74 75 Base = template.Must(template.ParseFiles("gonuts/templates/base.html")) 76 template.Must(Base.ParseGlob("gonuts/templates/base/*.html")) 77 }