func()

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
}