// Ftos converts form data into a model func Ftos(req *http.Request, model interface{}) error { log.TraceR(req, "parsing request form", nil) err := req.ParseForm() if err != nil { log.ErrorR(req, err, nil) return err } err = decoder.Decode(model, req.PostForm) if err != nil { log.ErrorR(req, err, nil) } return err }
func (s store) get(r *http.Request) (se *sessions.Session, e error) { log.TraceR(r, "getting session", nil) se, e = s.CookieStore.Get(r, s.name) if e != nil { log.ErrorR(r, e, nil) return } log.TraceR(r, "got session", log.Data{"session": se}) return se, e }
// Register creates routes for each static resource func Register(config render.Config, r *pat.Router) { log.Debug("registering not found handler for static package", nil) r.NotFoundHandler = http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { render.HTML(w, http.StatusNotFound, "error", render.DefaultVars(req, map[string]interface{}{"error": "Page not found"})) }) log.Debug("registering static content handlers for static package", nil) for _, file := range config.AssetNames()() { if strings.HasPrefix(file, "static/") { path := strings.TrimPrefix(file, "static") log.Trace("registering handler for static asset", log.Data{"path": path}) var mimeType string switch { case strings.HasSuffix(path, ".css"): mimeType = "text/css" case strings.HasSuffix(path, ".js"): mimeType = "application/javascript" default: mimeType = mime.TypeByExtension(path) } log.Trace("using mime type", log.Data{"type": mimeType}) r.Path(path).Methods("GET").HandlerFunc(func(w http.ResponseWriter, req *http.Request) { if b, err := config.Asset()("static" + path); err == nil { w.Header().Set("Content-Type", mimeType) w.Header().Set("Cache-control", "public, max-age=259200") w.WriteHeader(200) w.Write(b) return } // This should never happen! log.ErrorR(req, errors.New("it happened ¯\\_(ツ)_/¯"), nil) r.NotFoundHandler.ServeHTTP(w, req) }) } } }