Пример #1
0
        private async Task <T> GetAsync <T>(Func <NuGetClients, T> clientFactory, CancellationToken cancellationToken)
        {
            if (_clients == null)
            {
                await _mutex.WaitAsync(cancellationToken);

                try
                {
                    if (_clients == null)
                    {
                        var serviceIndexClient = new RawServiceIndexClient(_httpClient, _serviceIndexUrl);

                        var serviceIndex = await serviceIndexClient.GetAsync(cancellationToken);

                        var contentResourceUrl      = serviceIndex.GetPackageContentResourceUrl();
                        var metadataResourceUrl     = serviceIndex.GetPackageMetadataResourceUrl();
                        var catalogResourceUrl      = serviceIndex.GetCatalogResourceUrl();
                        var searchResourceUrl       = serviceIndex.GetSearchQueryResourceUrl();
                        var autocompleteResourceUrl = serviceIndex.GetSearchAutocompleteResourceUrl();

                        // Create clients for required resources.
                        var contentClient  = new RawPackageContentClient(_httpClient, contentResourceUrl);
                        var metadataClient = new RawPackageMetadataClient(_httpClient, metadataResourceUrl);
                        var searchClient   = new RawSearchClient(_httpClient, searchResourceUrl);

                        // Create clients for optional resources.
                        var catalogClient = catalogResourceUrl == null
                            ? new NullCatalogClient() as ICatalogClient
                            : new RawCatalogClient(_httpClient, catalogResourceUrl);
                        var autocompleteClient = autocompleteResourceUrl == null
                            ? new NullAutocompleteClient() as IAutocompleteClient
                            : new RawAutocompleteClient(_httpClient, autocompleteResourceUrl);


                        var publishClient = new RawPublishClient(_httpClient, serviceIndex);

                        _clients = new NuGetClients
                        {
                            ServiceIndex = serviceIndex,

                            PackageContentClient  = contentClient,
                            PackageMetadataClient = metadataClient,
                            SearchClient          = searchClient,
                            AutocompleteClient    = autocompleteClient,
                            CatalogClient         = catalogClient,
                            PublishClient         = publishClient,
                        };
                    }
                }
                finally
                {
                    _mutex.Release();
                }
            }

            // TODO: This should periodically refresh the service index response.
            return(clientFactory(_clients));
        }
Пример #2
0
        public ProtocolFixture()
        {
            var httpClient = new HttpClient(new TestDataHttpMessageHandler());

            NuGetClientFactory = new NuGetClientFactory(httpClient, TestData.ServiceIndexUrl);
            NuGetClient        = new NuGetClient(NuGetClientFactory);

            ServiceIndexClient = new RawServiceIndexClient(httpClient, TestData.ServiceIndexUrl);
            ContentClient      = new RawPackageContentClient(httpClient, TestData.PackageContentUrl);
            MetadataClient     = new RawPackageMetadataClient(httpClient, TestData.PackageMetadataUrl);
            SearchClient       = new RawSearchClient(httpClient, TestData.SearchUrl);
            AutocompleteClient = new RawAutocompleteClient(httpClient, TestData.AutocompleteUrl);
            CatalogClient      = new RawCatalogClient(httpClient, TestData.CatalogIndexUrl);
        }
Пример #3
0
        private async Task <T> GetClientAsync <T>(Func <NuGetClients, T> clientFactory, CancellationToken cancellationToken)
        {
            if (_clients == null)
            {
                await _mutex.WaitAsync(cancellationToken);

                try
                {
                    if (_clients == null)
                    {
                        var serviceIndexClient = new ServiceIndexClient(_httpClient, _serviceIndexUrl);

                        var serviceIndex = await serviceIndexClient.GetAsync(cancellationToken);

                        var contentClient  = new RawPackageContentClient(_httpClient, serviceIndex.GetPackageContentResourceUrl());
                        var metadataClient = new RawPackageMetadataClient(_httpClient, serviceIndex.GetPackageMetadataResourceUrl());
                        var catalogClient  = new RawCatalogClient(_httpClient, serviceIndex.GetCatalogResourceUrl());
                        var searchClient   = new RawSearchClient(_httpClient,
                                                                 serviceIndex.GetSearchQueryResourceUrl(),
                                                                 serviceIndex.GetSearchAutocompleteResourceUrl());

                        _clients = new NuGetClients
                        {
                            ServiceIndexClient    = serviceIndexClient,
                            PackageContentClient  = contentClient,
                            PackageMetadataClient = metadataClient,
                            SearchClient          = searchClient,
                            CatalogClient         = catalogClient,
                        };
                    }
                }
                finally
                {
                    _mutex.Release();
                }
            }

            // TODO: This should periodically refresh the service index response.
            return(clientFactory(_clients));
        }
 public RawPackageMetadataClientTests(ProtocolFixture fixture)
 {
     _target = fixture.MetadataClient;
 }