| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | package middlewareimport (	"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)}
 |