MCPcopy
hub / github.com/connectrpc/connect-go / ExampleUnaryInterceptorFunc

Function ExampleUnaryInterceptorFunc

interceptor_example_test.go:27–58  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

25)
26
27func ExampleUnaryInterceptorFunc() {
28 logger := log.New(os.Stdout, "" /* prefix */, 0 /* flags */)
29 loggingInterceptor := connect.UnaryInterceptorFunc(
30 func(next connect.UnaryFunc) connect.UnaryFunc {
31 return connect.UnaryFunc(func(ctx context.Context, request connect.AnyRequest) (connect.AnyResponse, error) {
32 logger.Println("calling:", request.Spec().Procedure)
33 logger.Println("request:", request.Any())
34 response, err := next(ctx, request)
35 if err != nil {
36 logger.Println("error:", err)
37 } else {
38 logger.Println("response:", response.Any())
39 }
40 return response, err
41 })
42 },
43 )
44 client := pingv1connect.NewPingServiceClient(
45 examplePingServer.Client(),
46 examplePingServer.URL(),
47 connect.WithInterceptors(loggingInterceptor),
48 )
49 if _, err := client.Ping(context.Background(), &pingv1.PingRequest{Number: 42}); err != nil {
50 logger.Println("error:", err)
51 return
52 }
53
54 // Output:
55 // calling: /connect.ping.v1.PingService/Ping
56 // request: number:42
57 // response: number:42
58}
59
60func ExampleWithInterceptors() {
61 logger := log.New(os.Stdout, "" /* prefix */, 0 /* flags */)

Callers

nothing calls this directly

Calls 9

PingMethod · 0.95
UnaryInterceptorFuncFuncType · 0.92
UnaryFuncFuncType · 0.92
NewPingServiceClientFunction · 0.92
WithInterceptorsFunction · 0.92
ClientMethod · 0.80
SpecMethod · 0.65
AnyMethod · 0.65
URLMethod · 0.45

Tested by

no test coverage detected