예제 #1
0
파일: tryerr.go 프로젝트: diankong/neomw
func Try(c *neo.Ctx, next neo.Next) {

	next()

	if c.HasErrors() {
		c.Res.Status = 500
		msg := ""
		for _, e := range c.Errors {
			msg += e.Error() + "\n"
		}
		c.Res.Text(fmt.Sprint(msg))
	}
}
예제 #2
0
파일: gzip.go 프로젝트: diankong/neomw
// Gzip returns a middleware which compresses HTTP response using gzip compression scheme.
func Gzip(c *neo.Ctx, next neo.Next) {
	scheme := "gzip"

	c.Res.Header().Set("Vary", "Accept-Encoding")
	// c.Res.Header().Set("Content-Encoding", "gzip")
	if strings.Contains(c.Res.Header().Get("Accept-Encoding"), scheme) {
		w := writerPool.Get().(*gzip.Writer)
		//replace the rep in ctx
		w.Reset(c.Res.Writer())
		defer func() {
			w.Close()
			writerPool.Put(w)
		}()
		gw := gzipWriter{Writer: w, ResponseWriter: c.Res.Writer()}
		c.Res.Header().Set("Content-Encoding", scheme)
		//need a set function for c.Res
		c.Response().SetWriter(gw)
	}
	next()
	return

}