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 }