| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | 
							- package middleware
 
- import (
 
- 	"github.com/labstack/echo"
 
- 	"github.com/labstack/gommon/random"
 
- )
 
- type (
 
- 	// RequestIDConfig defines the config for RequestID middleware.
 
- 	RequestIDConfig struct {
 
- 		// Skipper defines a function to skip middleware.
 
- 		Skipper Skipper
 
- 		// Generator defines a function to generate an ID.
 
- 		// Optional. Default value random.String(32).
 
- 		Generator func() string
 
- 	}
 
- )
 
- var (
 
- 	// DefaultRequestIDConfig is the default RequestID middleware config.
 
- 	DefaultRequestIDConfig = RequestIDConfig{
 
- 		Skipper:   DefaultSkipper,
 
- 		Generator: generator,
 
- 	}
 
- )
 
- // RequestID returns a X-Request-ID middleware.
 
- func RequestID() echo.MiddlewareFunc {
 
- 	return RequestIDWithConfig(DefaultRequestIDConfig)
 
- }
 
- // RequestIDWithConfig returns a X-Request-ID middleware with config.
 
- func RequestIDWithConfig(config RequestIDConfig) echo.MiddlewareFunc {
 
- 	// Defaults
 
- 	if config.Skipper == nil {
 
- 		config.Skipper = DefaultRequestIDConfig.Skipper
 
- 	}
 
- 	if config.Generator == nil {
 
- 		config.Generator = generator
 
- 	}
 
- 	return func(next echo.HandlerFunc) echo.HandlerFunc {
 
- 		return func(c echo.Context) error {
 
- 			if config.Skipper(c) {
 
- 				return next(c)
 
- 			}
 
- 			req := c.Request()
 
- 			res := c.Response()
 
- 			rid := req.Header.Get(echo.HeaderXRequestID)
 
- 			if rid == "" {
 
- 				rid = config.Generator()
 
- 			}
 
- 			res.Header().Set(echo.HeaderXRequestID, rid)
 
- 			return next(c)
 
- 		}
 
- 	}
 
- }
 
- func generator() string {
 
- 	return random.String(32)
 
- }
 
 
  |