// BodyLimitWithConfig returns a body limit middleware from config. // See: `BodyLimit()`. func BodyLimitWithConfig(config BodyLimitConfig) echo.MiddlewareFunc { limit, err := bytes.Parse(config.Limit) if err != nil { panic(fmt.Errorf("invalid body-limit=%s", config.Limit)) } config.limit = limit pool := limitedReaderPool(config) return func(next echo.HandlerFunc) echo.HandlerFunc { return func(c echo.Context) error { req := c.Request() // Based on content length if req.ContentLength() > config.limit { return echo.ErrStatusRequestEntityTooLarge } // Based on content read r := pool.Get().(*limitedReader) r.Reset(req.Body(), c) defer pool.Put(r) req.SetBody(r) return next(c) } } }
// BodyLimitWithConfig returns a body limit middleware from config. // See `BodyLimit()`. func BodyLimitWithConfig(config BodyLimitConfig) echo.MiddlewareFunc { limit, err := bytes.Parse(config.Limit) if err != nil { panic(fmt.Errorf("invalid body-limit=%s", config.Limit)) } config.limit = limit pool := limitedReaderPool(config) return func(next echo.HandlerFunc) echo.HandlerFunc { return func(c echo.Context) error { req := c.Request() r := pool.Get().(*limitedReader) r.Reset(req.Body(), c) defer pool.Put(r) req.SetBody(r) return next(c) } } }