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 }