github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/internal/peer/snapshot/client.go (about)

     1  /*
     2  Copyright hechain. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package snapshot
     8  
     9  import (
    10  	"io"
    11  	"os"
    12  
    13  	"github.com/hechain20/hechain/bccsp"
    14  	"github.com/hechain20/hechain/internal/peer/common"
    15  	pb "github.com/hyperledger/fabric-protos-go/peer"
    16  	"github.com/pkg/errors"
    17  	"github.com/spf13/viper"
    18  )
    19  
    20  // client holds client side dependency for the snapshot commands
    21  type client struct {
    22  	snapshotClient pb.SnapshotClient
    23  	signer         common.Signer
    24  	writer         io.Writer
    25  }
    26  
    27  // newClient creates a client instance
    28  func newClient(cryptoProvider bccsp.BCCSP) (*client, error) {
    29  	if err := validatePeerConnectionParameters(); err != nil {
    30  		return nil, err
    31  	}
    32  
    33  	snapshotClient, err := common.GetSnapshotClient(peerAddress, tlsRootCertFile)
    34  	if err != nil {
    35  		return nil, errors.WithMessagef(err, "failed to retrieve snapshot client")
    36  	}
    37  
    38  	signer, err := common.GetDefaultSigner()
    39  	if err != nil {
    40  		return nil, errors.WithMessage(err, "failed to retrieve default signer")
    41  	}
    42  
    43  	return &client{
    44  		signer:         signer,
    45  		snapshotClient: snapshotClient,
    46  		writer:         os.Stdout,
    47  	}, nil
    48  }
    49  
    50  func validatePeerConnectionParameters() error {
    51  	switch viper.GetBool("peer.tls.enabled") {
    52  	case true:
    53  		if tlsRootCertFile == "" {
    54  			return errors.New("the required parameter 'tlsRootCertFile' is empty. Rerun the command with --tlsRootCertFile flag")
    55  		}
    56  	case false:
    57  		tlsRootCertFile = ""
    58  	}
    59  
    60  	return nil
    61  }