2025-05-24 08:52:11 +02:00

29 lines
669 B
Go

package middleware
import (
"net/http"
)
// Middleware is a function that wraps an http.Handler with custom logic.
type Middleware func(http.Handler) http.Handler
// Chain is a helper to build up a pipeline of middlewares, then apply them to a
// final handler.
type Chain struct {
middlewares []Middleware
}
// Use appends a middleware to the chain.
func (c *Chain) Use(m Middleware) {
c.middlewares = append(c.middlewares, m)
}
// Then applies the entire chain of middlewares to the final handler in reverse
// order.
func (c *Chain) Then(h http.Handler) http.Handler {
for i := len(c.middlewares) - 1; i >= 0; i-- {
h = c.middlewares[i](h)
}
return h
}