You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
655 B
29 lines
655 B
package middleware |
|
|
|
import ( |
|
"context" |
|
"github.com/gin-gonic/gin" |
|
) |
|
|
|
type Handler func(context.Context, any) (any, error) |
|
|
|
type Middleware func(Handler) Handler |
|
|
|
func Chain(m ...Middleware) Middleware { |
|
return func(handler Handler) Handler { |
|
for i := len(m) - 1; i >= 0; i-- { |
|
handler = m[i](handler) |
|
} |
|
return handler |
|
} |
|
} |
|
|
|
func HttpMiddleware(c *gin.Context, handler Handler, m ...Middleware) Handler { |
|
opts := []Middleware{Recover(), AddHeaderMdMiddle(c), func(handler Handler) Handler { |
|
return func(ctx context.Context, a any) (any, error) { |
|
return handler(ctx, a) |
|
} |
|
}} |
|
opts = append(opts, m...) |
|
return Chain(opts...)(handler) |
|
}
|
|
|