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.
22 lines
541 B
22 lines
541 B
4 years ago
|
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)
|
||
|
}
|
||
|
}
|