github.com/seeker-insurance/kit@v0.0.13/web/middleware/template.go (about)

     1  package middleware
     2  
     3  import (
     4  	"github.com/labstack/echo"
     5  	emw "github.com/labstack/echo/middleware"
     6  )
     7  
     8  type (
     9  	// ApiErrorConfig defines the config for ApiError middleware.
    10  	TemplateConfig struct {
    11  		// Skipper defines a function to skip middleware.
    12  		Skipper emw.Skipper
    13  	}
    14  )
    15  
    16  var (
    17  	// DefaultApiErrorConfig is the default ApiError middleware config.
    18  	DefaultTemplateConfig = TemplateConfig{
    19  		Skipper: emw.DefaultSkipper,
    20  	}
    21  )
    22  
    23  // ApiError returns a middleware that logs converts errors to json api errors.
    24  func TemplateMiddleware() echo.MiddlewareFunc {
    25  	return TemplateWithConfig(DefaultTemplateConfig)
    26  }
    27  
    28  func TemplateWithConfig(config TemplateConfig) echo.MiddlewareFunc {
    29  	if config.Skipper == nil {
    30  		config.Skipper = DefaultTemplateConfig.Skipper
    31  	}
    32  
    33  	return func(next echo.HandlerFunc) echo.HandlerFunc {
    34  		return func(c echo.Context) (err error) {
    35  			if config.Skipper(c) {
    36  				return next(c)
    37  			}
    38  
    39  			return next(c)
    40  		}
    41  	}
    42  }