github.com/arunkumar7540/cli@v6.45.0+incompatible/command/v6/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/router"
     7  	routerWrapper "code.cloudfoundry.org/cli/api/router/wrapper"
     8  	"code.cloudfoundry.org/cli/api/uaa"
     9  	uaaWrapper "code.cloudfoundry.org/cli/api/uaa/wrapper"
    10  	"code.cloudfoundry.org/cli/command"
    11  	"code.cloudfoundry.org/cli/command/translatableerror"
    12  )
    13  
    14  // NewClients creates a new V2 Cloud Controller client and UAA client using the
    15  // passed in config.
    16  func NewClients(config command.Config, ui command.UI, targetCF bool) (*ccv2.Client, *uaa.Client, error) {
    17  	ccWrappers := []ccv2.ConnectionWrapper{}
    18  
    19  	verbose, location := config.Verbose()
    20  	if verbose {
    21  		ccWrappers = append(ccWrappers, ccWrapper.NewRequestLogger(ui.RequestLoggerTerminalDisplay()))
    22  	}
    23  
    24  	if location != nil {
    25  		ccWrappers = append(ccWrappers, ccWrapper.NewRequestLogger(ui.RequestLoggerFileWriter(location)))
    26  	}
    27  
    28  	authWrapper := ccWrapper.NewUAAAuthentication(nil, config)
    29  
    30  	ccWrappers = append(ccWrappers, authWrapper)
    31  	ccWrappers = append(ccWrappers, ccWrapper.NewRetryRequest(config.RequestRetryCount()))
    32  
    33  	ccClient := ccv2.NewClient(ccv2.Config{
    34  		AppName:            config.BinaryName(),
    35  		AppVersion:         config.BinaryVersion(),
    36  		JobPollingTimeout:  config.OverallPollingTimeout(),
    37  		JobPollingInterval: config.PollingInterval(),
    38  		Wrappers:           ccWrappers,
    39  	})
    40  
    41  	if !targetCF {
    42  		return ccClient, nil, nil
    43  	}
    44  
    45  	if config.Target() == "" {
    46  		return nil, nil, translatableerror.NoAPISetError{
    47  			BinaryName: config.BinaryName(),
    48  		}
    49  	}
    50  
    51  	_, err := ccClient.TargetCF(ccv2.TargetSettings{
    52  		URL:               config.Target(),
    53  		SkipSSLValidation: config.SkipSSLValidation(),
    54  		DialTimeout:       config.DialTimeout(),
    55  	})
    56  	if err != nil {
    57  		return nil, nil, err
    58  	}
    59  
    60  	if err = command.WarnIfAPIVersionBelowSupportedMinimum(ccClient.APIVersion(), ui); err != nil {
    61  		return nil, nil, err
    62  	}
    63  
    64  	if ccClient.AuthorizationEndpoint() == "" {
    65  		return nil, nil, translatableerror.AuthorizationEndpointNotFoundError{}
    66  	}
    67  
    68  	uaaClient := uaa.NewClient(config)
    69  
    70  	if verbose {
    71  		uaaClient.WrapConnection(uaaWrapper.NewRequestLogger(ui.RequestLoggerTerminalDisplay()))
    72  	}
    73  	if location != nil {
    74  		uaaClient.WrapConnection(uaaWrapper.NewRequestLogger(ui.RequestLoggerFileWriter(location)))
    75  	}
    76  
    77  	uaaAuthWrapper := uaaWrapper.NewUAAAuthentication(nil, config)
    78  	uaaClient.WrapConnection(uaaAuthWrapper)
    79  	uaaClient.WrapConnection(uaaWrapper.NewRetryRequest(config.RequestRetryCount()))
    80  
    81  	err = uaaClient.SetupResources(ccClient.AuthorizationEndpoint())
    82  	if err != nil {
    83  		return nil, nil, err
    84  	}
    85  
    86  	uaaAuthWrapper.SetClient(uaaClient)
    87  	authWrapper.SetClient(uaaClient)
    88  
    89  	return ccClient, uaaClient, err
    90  }
    91  
    92  func NewRouterClient(config command.Config, ui command.UI, uaaClient *uaa.Client) (*router.Client, error) {
    93  	routerConfig := router.Config{
    94  		AppName:    config.BinaryName(),
    95  		AppVersion: config.BinaryVersion(),
    96  		ConnectionConfig: router.ConnectionConfig{
    97  			DialTimeout:       config.DialTimeout(),
    98  			SkipSSLValidation: config.SkipSSLValidation(),
    99  		},
   100  		RoutingEndpoint: config.RoutingEndpoint(),
   101  	}
   102  
   103  	routerWrappers := []router.ConnectionWrapper{}
   104  
   105  	verbose, location := config.Verbose()
   106  
   107  	if verbose {
   108  		routerWrappers = append(routerWrappers, routerWrapper.NewRequestLogger(ui.RequestLoggerTerminalDisplay()))
   109  	}
   110  
   111  	if location != nil {
   112  		routerWrappers = append(routerWrappers, routerWrapper.NewRequestLogger(ui.RequestLoggerFileWriter(location)))
   113  	}
   114  
   115  	authWrapper := routerWrapper.NewUAAAuthentication(uaaClient, config)
   116  	errorWrapper := routerWrapper.NewErrorWrapper()
   117  
   118  	routerWrappers = append(routerWrappers, authWrapper, errorWrapper)
   119  	routerConfig.Wrappers = routerWrappers
   120  
   121  	routerClient := router.NewClient(routerConfig)
   122  	return routerClient, nil
   123  }