summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/labstack
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/labstack')
-rw-r--r--vendor/github.com/labstack/echo/v4/CHANGELOG.md23
-rw-r--r--vendor/github.com/labstack/echo/v4/README.md2
-rw-r--r--vendor/github.com/labstack/echo/v4/echo.go3
-rw-r--r--vendor/github.com/labstack/echo/v4/middleware/compress.go9
-rw-r--r--vendor/github.com/labstack/echo/v4/middleware/decompress.go69
-rw-r--r--vendor/github.com/labstack/echo/v4/middleware/rate_limiter.go13
-rw-r--r--vendor/github.com/labstack/echo/v4/middleware/request_id.go15
-rw-r--r--vendor/github.com/labstack/echo/v4/router.go3
8 files changed, 76 insertions, 61 deletions
diff --git a/vendor/github.com/labstack/echo/v4/CHANGELOG.md b/vendor/github.com/labstack/echo/v4/CHANGELOG.md
index f52f264f..372ed13c 100644
--- a/vendor/github.com/labstack/echo/v4/CHANGELOG.md
+++ b/vendor/github.com/labstack/echo/v4/CHANGELOG.md
@@ -1,5 +1,28 @@
# Changelog
+## v4.6.3 - 2022-01-10
+
+**Fixes**
+
+* Fixed Echo version number in greeting message which was not incremented to `4.6.2` [#2066](https://github.com/labstack/echo/issues/2066)
+
+
+## v4.6.2 - 2022-01-08
+
+**Fixes**
+
+* Fixed route containing escaped colon should be matchable but is not matched to request path [#2047](https://github.com/labstack/echo/pull/2047)
+* Fixed a problem that returned wrong content-encoding when the gzip compressed content was empty. [#1921](https://github.com/labstack/echo/pull/1921)
+* Update (test) dependencies [#2021](https://github.com/labstack/echo/pull/2021)
+
+
+**Enhancements**
+
+* Add support for configurable target header for the request_id middleware [#2040](https://github.com/labstack/echo/pull/2040)
+* Change decompress middleware to use stream decompression instead of buffering [#2018](https://github.com/labstack/echo/pull/2018)
+* Documentation updates
+
+
## v4.6.1 - 2021-09-26
**Enhancements**
diff --git a/vendor/github.com/labstack/echo/v4/README.md b/vendor/github.com/labstack/echo/v4/README.md
index 364f98ac..930cb034 100644
--- a/vendor/github.com/labstack/echo/v4/README.md
+++ b/vendor/github.com/labstack/echo/v4/README.md
@@ -66,9 +66,9 @@ go get github.com/labstack/echo/v4
package main
import (
- "net/http"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
+ "net/http"
)
func main() {
diff --git a/vendor/github.com/labstack/echo/v4/echo.go b/vendor/github.com/labstack/echo/v4/echo.go
index df5d3584..1a60fb07 100644
--- a/vendor/github.com/labstack/echo/v4/echo.go
+++ b/vendor/github.com/labstack/echo/v4/echo.go
@@ -214,6 +214,7 @@ const (
HeaderXHTTPMethodOverride = "X-HTTP-Method-Override"
HeaderXRealIP = "X-Real-IP"
HeaderXRequestID = "X-Request-ID"
+ HeaderXCorrelationID = "X-Correlation-ID"
HeaderXRequestedWith = "X-Requested-With"
HeaderServer = "Server"
HeaderOrigin = "Origin"
@@ -241,7 +242,7 @@ const (
const (
// Version of Echo
- Version = "4.6.1"
+ Version = "4.6.3"
website = "https://echo.labstack.com"
// http://patorjk.com/software/taag/#p=display&f=Small%20Slant&t=Echo
banner = `
diff --git a/vendor/github.com/labstack/echo/v4/middleware/compress.go b/vendor/github.com/labstack/echo/v4/middleware/compress.go
index 6ae19745..ac6672e9 100644
--- a/vendor/github.com/labstack/echo/v4/middleware/compress.go
+++ b/vendor/github.com/labstack/echo/v4/middleware/compress.go
@@ -27,6 +27,7 @@ type (
gzipResponseWriter struct {
io.Writer
http.ResponseWriter
+ wroteBody bool
}
)
@@ -78,8 +79,9 @@ func GzipWithConfig(config GzipConfig) echo.MiddlewareFunc {
}
rw := res.Writer
w.Reset(rw)
+ grw := &gzipResponseWriter{Writer: w, ResponseWriter: rw}
defer func() {
- if res.Size == 0 {
+ if !grw.wroteBody {
if res.Header().Get(echo.HeaderContentEncoding) == gzipScheme {
res.Header().Del(echo.HeaderContentEncoding)
}
@@ -92,7 +94,6 @@ func GzipWithConfig(config GzipConfig) echo.MiddlewareFunc {
w.Close()
pool.Put(w)
}()
- grw := &gzipResponseWriter{Writer: w, ResponseWriter: rw}
res.Writer = grw
}
return next(c)
@@ -101,9 +102,6 @@ func GzipWithConfig(config GzipConfig) echo.MiddlewareFunc {
}
func (w *gzipResponseWriter) WriteHeader(code int) {
- if code == http.StatusNoContent { // Issue #489
- w.ResponseWriter.Header().Del(echo.HeaderContentEncoding)
- }
w.Header().Del(echo.HeaderContentLength) // Issue #444
w.ResponseWriter.WriteHeader(code)
}
@@ -112,6 +110,7 @@ func (w *gzipResponseWriter) Write(b []byte) (int, error) {
if w.Header().Get(echo.HeaderContentType) == "" {
w.Header().Set(echo.HeaderContentType, http.DetectContentType(b))
}
+ w.wroteBody = true
return w.Writer.Write(b)
}
diff --git a/vendor/github.com/labstack/echo/v4/middleware/decompress.go b/vendor/github.com/labstack/echo/v4/middleware/decompress.go
index c046359a..88ec7098 100644
--- a/vendor/github.com/labstack/echo/v4/middleware/decompress.go
+++ b/vendor/github.com/labstack/echo/v4/middleware/decompress.go
@@ -1,10 +1,8 @@
package middleware
import (
- "bytes"
"compress/gzip"
"io"
- "io/ioutil"
"net/http"
"sync"
@@ -43,26 +41,7 @@ type DefaultGzipDecompressPool struct {
}
func (d *DefaultGzipDecompressPool) gzipDecompressPool() sync.Pool {
- return sync.Pool{
- New: func() interface{} {
- // create with an empty reader (but with GZIP header)
- w, err := gzip.NewWriterLevel(ioutil.Discard, gzip.BestSpeed)
- if err != nil {
- return err
- }
-
- b := new(bytes.Buffer)
- w.Reset(b)
- w.Flush()
- w.Close()
-
- r, err := gzip.NewReader(bytes.NewReader(b.Bytes()))
- if err != nil {
- return err
- }
- return r
- },
- }
+ return sync.Pool{New: func() interface{} { return new(gzip.Reader) }}
}
//Decompress decompresses request body based if content encoding type is set to "gzip" with default config
@@ -82,38 +61,38 @@ func DecompressWithConfig(config DecompressConfig) echo.MiddlewareFunc {
return func(next echo.HandlerFunc) echo.HandlerFunc {
pool := config.GzipDecompressPool.gzipDecompressPool()
+
return func(c echo.Context) error {
if config.Skipper(c) {
return next(c)
}
- switch c.Request().Header.Get(echo.HeaderContentEncoding) {
- case GZIPEncoding:
- b := c.Request().Body
-
- i := pool.Get()
- gr, ok := i.(*gzip.Reader)
- if !ok {
- return echo.NewHTTPError(http.StatusInternalServerError, i.(error).Error())
- }
- if err := gr.Reset(b); err != nil {
- pool.Put(gr)
- if err == io.EOF { //ignore if body is empty
- return next(c)
- }
- return err
- }
- var buf bytes.Buffer
- io.Copy(&buf, gr)
+ if c.Request().Header.Get(echo.HeaderContentEncoding) != GZIPEncoding {
+ return next(c)
+ }
- gr.Close()
- pool.Put(gr)
+ i := pool.Get()
+ gr, ok := i.(*gzip.Reader)
+ if !ok || gr == nil {
+ return echo.NewHTTPError(http.StatusInternalServerError, i.(error).Error())
+ }
+ defer pool.Put(gr)
- b.Close() // http.Request.Body is closed by the Server, but because we are replacing it, it must be closed here
+ b := c.Request().Body
+ defer b.Close()
- r := ioutil.NopCloser(&buf)
- c.Request().Body = r
+ if err := gr.Reset(b); err != nil {
+ if err == io.EOF { //ignore if body is empty
+ return next(c)
+ }
+ return err
}
+
+ // only Close gzip reader if it was set to a proper gzip source otherwise it will panic on close.
+ defer gr.Close()
+
+ c.Request().Body = gr
+
return next(c)
}
}
diff --git a/vendor/github.com/labstack/echo/v4/middleware/rate_limiter.go b/vendor/github.com/labstack/echo/v4/middleware/rate_limiter.go
index 0291eb45..be2b348d 100644
--- a/vendor/github.com/labstack/echo/v4/middleware/rate_limiter.go
+++ b/vendor/github.com/labstack/echo/v4/middleware/rate_limiter.go
@@ -153,9 +153,10 @@ func RateLimiterWithConfig(config RateLimiterConfig) echo.MiddlewareFunc {
type (
// RateLimiterMemoryStore is the built-in store implementation for RateLimiter
RateLimiterMemoryStore struct {
- visitors map[string]*Visitor
- mutex sync.Mutex
- rate rate.Limit
+ visitors map[string]*Visitor
+ mutex sync.Mutex
+ rate rate.Limit //for more info check out Limiter docs - https://pkg.go.dev/golang.org/x/time/rate#Limit.
+
burst int
expiresIn time.Duration
lastCleanup time.Time
@@ -170,6 +171,8 @@ type (
/*
NewRateLimiterMemoryStore returns an instance of RateLimiterMemoryStore with
the provided rate (as req/s). The provided rate less than 1 will be treated as zero.
+for more info check out Limiter docs - https://pkg.go.dev/golang.org/x/time/rate#Limit.
+
Burst and ExpiresIn will be set to default values.
Example (with 20 requests/sec):
@@ -199,7 +202,7 @@ Characteristics:
Example:
limiterStore := middleware.NewRateLimiterMemoryStoreWithConfig(
- middleware.RateLimiterMemoryStoreConfig{Rate: 50, Burst: 200, ExpiresIn: 5 * time.Minutes},
+ middleware.RateLimiterMemoryStoreConfig{Rate: 50, Burst: 200, ExpiresIn: 5 * time.Minute},
)
*/
func NewRateLimiterMemoryStoreWithConfig(config RateLimiterMemoryStoreConfig) (store *RateLimiterMemoryStore) {
@@ -221,7 +224,7 @@ func NewRateLimiterMemoryStoreWithConfig(config RateLimiterMemoryStoreConfig) (s
// RateLimiterMemoryStoreConfig represents configuration for RateLimiterMemoryStore
type RateLimiterMemoryStoreConfig struct {
- Rate rate.Limit // Rate of requests allowed to pass as req/s
+ Rate rate.Limit // Rate of requests allowed to pass as req/s. For more info check out Limiter docs - https://pkg.go.dev/golang.org/x/time/rate#Limit.
Burst int // Burst additionally allows a number of requests to pass when rate limit is reached
ExpiresIn time.Duration // ExpiresIn is the duration after that a rate limiter is cleaned up
}
diff --git a/vendor/github.com/labstack/echo/v4/middleware/request_id.go b/vendor/github.com/labstack/echo/v4/middleware/request_id.go
index b0baeeb2..8c5ff660 100644
--- a/vendor/github.com/labstack/echo/v4/middleware/request_id.go
+++ b/vendor/github.com/labstack/echo/v4/middleware/request_id.go
@@ -17,14 +17,18 @@ type (
// RequestIDHandler defines a function which is executed for a request id.
RequestIDHandler func(echo.Context, string)
+
+ // TargetHeader defines what header to look for to populate the id
+ TargetHeader string
}
)
var (
// DefaultRequestIDConfig is the default RequestID middleware config.
DefaultRequestIDConfig = RequestIDConfig{
- Skipper: DefaultSkipper,
- Generator: generator,
+ Skipper: DefaultSkipper,
+ Generator: generator,
+ TargetHeader: echo.HeaderXRequestID,
}
)
@@ -42,6 +46,9 @@ func RequestIDWithConfig(config RequestIDConfig) echo.MiddlewareFunc {
if config.Generator == nil {
config.Generator = generator
}
+ if config.TargetHeader == "" {
+ config.TargetHeader = echo.HeaderXRequestID
+ }
return func(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
@@ -51,11 +58,11 @@ func RequestIDWithConfig(config RequestIDConfig) echo.MiddlewareFunc {
req := c.Request()
res := c.Response()
- rid := req.Header.Get(echo.HeaderXRequestID)
+ rid := req.Header.Get(config.TargetHeader)
if rid == "" {
rid = config.Generator()
}
- res.Header().Set(echo.HeaderXRequestID, rid)
+ res.Header().Set(config.TargetHeader, rid)
if config.RequestIDHandler != nil {
config.RequestIDHandler(c, rid)
}
diff --git a/vendor/github.com/labstack/echo/v4/router.go b/vendor/github.com/labstack/echo/v4/router.go
index a8277c8b..dc93e29c 100644
--- a/vendor/github.com/labstack/echo/v4/router.go
+++ b/vendor/github.com/labstack/echo/v4/router.go
@@ -99,6 +99,9 @@ func (r *Router) Add(method, path string, h HandlerFunc) {
for i, lcpIndex := 0, len(path); i < lcpIndex; i++ {
if path[i] == ':' {
if i > 0 && path[i-1] == '\\' {
+ path = path[:i-1] + path[i:]
+ i--
+ lcpIndex--
continue
}
j := i + 1