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  }