in client/channel/channel.go [53:84]
func (cb *ChannelBuilder) Build() (*grpc.ClientConn, error) {
var opts []grpc.DialOption
opts = append(opts, grpc.WithAuthority(cb.Host))
if cb.Token == "" {
opts = append(opts, grpc.WithInsecure())
} else {
// Note: On the Windows platform, use of x509.SystemCertPool() requires
// go version 1.18 or higher.
systemRoots, err := x509.SystemCertPool()
if err != nil {
return nil, err
}
cred := credentials.NewTLS(&tls.Config{
RootCAs: systemRoots,
})
opts = append(opts, grpc.WithTransportCredentials(cred))
t := oauth2.Token{
AccessToken: cb.Token,
TokenType: "bearer",
}
opts = append(opts, grpc.WithPerRPCCredentials(oauth.NewOauthAccess(&t)))
}
remote := fmt.Sprintf("%v:%v", cb.Host, cb.Port)
conn, err := grpc.Dial(remote, opts...)
if err != nil {
return nil, fmt.Errorf("failed to connect to remote %s: %w", remote, err)
}
return conn, nil
}