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