mirror of
https://github.com/go-kit/kit.git
synced 2026-04-24 20:33:58 +02:00
50 lines
847 B
Go
50 lines
847 B
Go
package endpoint_test
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/go-kit/kit/endpoint"
|
|
)
|
|
|
|
func ExampleChain() {
|
|
e := endpoint.Chain(
|
|
annotate("first"),
|
|
annotate("second"),
|
|
annotate("third"),
|
|
)(myEndpoint)
|
|
|
|
if _, err := e(ctx, req); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
// Output:
|
|
// first pre
|
|
// second pre
|
|
// third pre
|
|
// my endpoint!
|
|
// third post
|
|
// second post
|
|
// first post
|
|
}
|
|
|
|
var (
|
|
ctx = context.Background()
|
|
req = struct{}{}
|
|
)
|
|
|
|
func annotate(s string) endpoint.Middleware {
|
|
return func(next endpoint.Endpoint) endpoint.Endpoint {
|
|
return func(ctx context.Context, request interface{}) (interface{}, error) {
|
|
fmt.Println(s, "pre")
|
|
defer fmt.Println(s, "post")
|
|
return next(ctx, request)
|
|
}
|
|
}
|
|
}
|
|
|
|
func myEndpoint(context.Context, interface{}) (interface{}, error) {
|
|
fmt.Println("my endpoint!")
|
|
return struct{}{}, nil
|
|
}
|