package snap import ( "net/http" "encoding/json" "git.thirdmartini.com/pub/snap/auth" ) type Context struct { srv *Server auth *auth.AuthData w http.ResponseWriter r *http.Request vars map[string]string } type SnapContent struct { User string Theme string Content interface{} } func (c *Context) GetRequest() *http.Request { return c.r } func (c *Context) Writer() http.ResponseWriter { return c.w } func (c *Context) GetUser() string { if c.auth == nil { return "" } return c.auth.User } func (c *Context) Error(code int, msg string) { c.srv.renderError(c.w, code, msg) } func (c *Context) Reply(msg string) { c.srv.reply(c.w, msg) } func (c *Context) ReplyObject(obj interface{}) { msg, err := json.Marshal(obj) if err != nil { c.Error(400, "Internal Server Error") } c.Reply(string(msg)) } func (c *Context) Render(tmpl string, content interface{}) { c.srv.render(c.w, tmpl, content) } func (c *Context) RenderEx(tmpl string, content interface{}) { cnt := SnapContent { User: c.GetUser(), Theme: c.srv.theme, Content:content, } c.srv.render(c.w, tmpl, &cnt) } func (c *Context) GetVar(k string) ( string, bool) { v,ok := c.vars[k] return v, ok } func (c *Context) GetVarDefault(k string,def string) (string) { v,ok := c.vars[k] if !ok { return def } return v } func (c *Context) ParseForm() error { return c.r.ParseForm() } func (c *Context) FormValue(k string) string { return c.r.FormValue(k) }