github.com/dcarley/cf-cli@v6.24.1-0.20170220111324-4225ff346898+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) (*ccv2.Client, *uaa.Client, error) {
    14  	if config.Target() == "" {
    15  		return nil, nil, command.NoAPISetError{
    16  			BinaryName: config.BinaryName(),
    17  		}
    18  	}
    19  
    20  	ccClient := ccv2.NewClient(ccv2.Config{
    21  		AppName:            config.BinaryName(),
    22  		AppVersion:         config.BinaryVersion(),
    23  		JobPollingTimeout:  config.OverallPollingTimeout(),
    24  		JobPollingInterval: config.PollingInterval(),
    25  	})
    26  	_, err := ccClient.TargetCF(ccv2.TargetSettings{
    27  		URL:               config.Target(),
    28  		SkipSSLValidation: config.SkipSSLValidation(),
    29  		DialTimeout:       config.DialTimeout(),
    30  	})
    31  	if err != nil {
    32  		return nil, nil, err
    33  	}
    34  
    35  	uaaClient := uaa.NewClient(uaa.Config{
    36  		AppName:           config.BinaryName(),
    37  		AppVersion:        config.BinaryVersion(),
    38  		ClientID:          config.UAAOAuthClient(),
    39  		ClientSecret:      config.UAAOAuthClientSecret(),
    40  		DialTimeout:       config.DialTimeout(),
    41  		SkipSSLValidation: config.SkipSSLValidation(),
    42  		URL:               ccClient.TokenEndpoint(),
    43  	})
    44  
    45  	verbose, location := config.Verbose()
    46  	if verbose {
    47  		ccClient.WrapConnection(ccWrapper.NewRequestLogger(command.NewRequestLoggerTerminalDisplay(ui)))
    48  		uaaClient.WrapConnection(uaaWrapper.NewRequestLogger(command.NewRequestLoggerTerminalDisplay(ui)))
    49  	}
    50  	if location != nil {
    51  		ccClient.WrapConnection(ccWrapper.NewRequestLogger(command.NewRequestLoggerFileWriter(ui, location)))
    52  		uaaClient.WrapConnection(uaaWrapper.NewRequestLogger(command.NewRequestLoggerFileWriter(ui, location)))
    53  	}
    54  
    55  	ccClient.WrapConnection(ccWrapper.NewUAAAuthentication(uaaClient, config))
    56  	ccClient.WrapConnection(ccWrapper.NewRetryRequest(2))
    57  
    58  	uaaClient.WrapConnection(uaaWrapper.NewUAAAuthentication(uaaClient, config))
    59  	uaaClient.WrapConnection(uaaWrapper.NewRetryRequest(2))
    60  
    61  	return ccClient, uaaClient, err
    62  }