Repository navigation
Expand file tree
/
Copy pathmain.go
More file actions
67 lines (60 loc) · 1.97 KB
/
Copy pathmain.go
File metadata and controls
67 lines (60 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// Copyright 2021-2026 The Connect Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package main
import (
"context"
"errors"
"io"
"log"
"net/http"
"connectrpc.com/connect/v2"
"connectrpc.com/connect/v2/connecthttp"
v1 "connectrpc.com/connect/v2/internal/gen/connect/ping/v1"
pingv1connect "connectrpc.com/connect/v2/internal/gen/connect/ping/v1/pingv1connect"
)
// clientLoggingInterceptor logs each call before the stream is opened.
// Interceptors are passed to connect.NewClient and run in argument order.
func clientLoggingInterceptor(next connect.ClientFunc) connect.ClientFunc {
return func(ctx context.Context, spec connect.Spec) (connect.ClientStream, error) {
log.Printf("calling %s", spec.Procedure)
return next(ctx, spec)
}
}
func main() {
ctx := context.Background()
client := connect.NewClient(
connecthttp.NewTransport(http.DefaultClient, "http://localhost:8080"),
clientLoggingInterceptor,
)
pingClient := pingv1connect.NewPingServiceClient(client)
res, err := pingClient.Ping(ctx, &v1.PingRequest{Number: 42, Text: "hello"})
if err != nil {
log.Fatalf("Ping: %v", err)
}
log.Printf("Ping: number=%d text=%q", res.Number, res.Text)
stream, err := pingClient.CountUp(ctx, &v1.CountUpRequest{Number: 3})
if err != nil {
log.Fatalf("CountUp: %v", err)
}
for {
msg, err := stream.Receive()
if errors.Is(err, io.EOF) {
break
}
if err != nil {
log.Fatalf("CountUp.Receive: %v", err)
}
log.Printf("CountUp: %d", msg.Number)
}
}