github.com/jghiloni/cli@v6.28.1-0.20170628223758-0ce05fe032a2+incompatible/command/v2/shared/new_clients.go (about)

     1  package shared
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccv2"
     5  	ccWrapper "code.cloudfoundry.org/cli/api/cloudcontroller/wrapper"
     6  	"code.cloudfoundry.org/cli/api/uaa"
     7  	uaaWrapper "code.cloudfoundry.org/cli/api/uaa/wrapper"
     8  	"code.cloudfoundry.org/cli/command"
     9  )
    10  
    11  // NewClients creates a new V2 Cloud Controller client and UAA client using the
    12  // passed in config.
    13  func NewClients(config command.Config, ui command.UI, targetCF bool) (*ccv2.Client, *uaa.Client, error) {
    14  	ccWrappers := []ccv2.ConnectionWrapper{}
    15  
    16  	verbose, location := config.Verbose()
    17  
    18  	if verbose {
    19  		ccWrappers = append(ccWrappers, ccWrapper.NewRequestLogger(ui.RequestLoggerTerminalDisplay()))
    20  	}
    21  
    22  	if location != nil {
    23  		ccWrappers = append(ccWrappers, ccWrapper.NewRequestLogger(ui.RequestLoggerFileWriter(location)))
    24  	}
    25  
    26  	authWrapper := ccWrapper.NewUAAAuthentication(nil, config)
    27  
    28  	ccWrappers = append(ccWrappers, authWrapper)
    29  	ccWrappers = append(ccWrappers, ccWrapper.NewRetryRequest(2))
    30  
    31  	ccClient := ccv2.NewClient(ccv2.Config{
    32  		AppName:            config.BinaryName(),
    33  		AppVersion:         config.BinaryVersion(),
    34  		JobPollingTimeout:  config.OverallPollingTimeout(),
    35  		JobPollingInterval: config.PollingInterval(),
    36  		Wrappers:           ccWrappers,
    37  	})
    38  
    39  	if !targetCF {
    40  		return ccClient, nil, nil
    41  	}
    42  
    43  	if config.Target() == "" {
    44  		return nil, nil, command.NoAPISetError{
    45  			BinaryName: config.BinaryName(),
    46  		}
    47  	}
    48  
    49  	_, err := ccClient.TargetCF(ccv2.TargetSettings{
    50  		URL:               config.Target(),
    51  		SkipSSLValidation: config.SkipSSLValidation(),
    52  		DialTimeout:       config.DialTimeout(),
    53  	})
    54  	if err != nil {
    55  		return nil, nil, HandleError(err)
    56  	}
    57  
    58  	uaaClient := uaa.NewClient(uaa.Config{
    59  		AppName:           config.BinaryName(),
    60  		AppVersion:        config.BinaryVersion(),
    61  		ClientID:          config.UAAOAuthClient(),
    62  		ClientSecret:      config.UAAOAuthClientSecret(),
    63  		DialTimeout:       config.DialTimeout(),
    64  		SkipSSLValidation: config.SkipSSLValidation(),
    65  		URL:               ccClient.TokenEndpoint(),
    66  	})
    67  
    68  	if verbose {
    69  		uaaClient.WrapConnection(uaaWrapper.NewRequestLogger(ui.RequestLoggerTerminalDisplay()))
    70  	}
    71  	if location != nil {
    72  		uaaClient.WrapConnection(uaaWrapper.NewRequestLogger(ui.RequestLoggerFileWriter(location)))
    73  	}
    74  
    75  	uaaClient.WrapConnection(uaaWrapper.NewUAAAuthentication(uaaClient, config))
    76  	uaaClient.WrapConnection(uaaWrapper.NewRetryRequest(2))
    77  
    78  	authWrapper.SetClient(uaaClient)
    79  
    80  	return ccClient, uaaClient, err
    81  }