func()

in pkg/dataplane/client_factory.go [81:115]


func (c *clientFactory) NewClient(identityURL string) (Client, error) {
	parsedURL, err := url.ParseRequestURI(identityURL)
	if err != nil {
		return nil, fmt.Errorf("error parsing identity URL: %w", err)
	}
	server := url.URL{
		Scheme: parsedURL.Scheme,
		Host:   parsedURL.Host,
		Path:   parsedURL.Path,
	}

	azCoreClient, err := azcore.NewClient(moduleName, moduleVersion, runtime.PipelineOptions{
		PerCall: []policy.Policy{
			httpRequestDoerFunc(func(req *policy.Request) (*http.Response, error) {
				// x-ms-identity-url header from ARM contains query parameters we need to keep
				query := req.Raw().URL.Query()
				for key, values := range parsedURL.Query() {
					for _, value := range values {
						query.Add(key, value)
					}
				}
				req.Raw().URL.RawQuery = query.Encode()
				return req.Next()
			}),
			newAuthenticatorPolicy(c.cred, c.audience),
		},
	}, c.clientOpts)
	if err != nil {
		return nil, fmt.Errorf("error creating azcore client: %w", err)
	}
	return &clientAdapter{
		hostPath: server.String(),
		delegate: client.NewManagedIdentityDataPlaneAPIClient(azCoreClient),
	}, nil
}