package middleware import ( "context" ) // Handler defines the handler invoked by Middleware. type Handler func(ctx context.Context, req interface{}) (interface{}, error) // Middleware is HTTP/gRPC transport middleware. type Middleware func(Handler) Handler // Chain returns a Middleware that specifies the chained handler for endpoint. func Chain(outer Middleware, others ...Middleware) Middleware { return func(next Handler) Handler { for i := len(others) - 1; i >= 0; i-- { next = others[i](next) } return outer(next) } }