Beispiel #1
0
            public override Task <Tuple <bool, INuGetResource> > TryCreate(SourceRepository source, CancellationToken token)
            {
                HttpSourceResource curResource = null;

                if (InjectedHttpSources.TryGetValue(source.PackageSource.Source, out HttpSource httpSource))
                {
                    curResource = new HttpSourceResource(httpSource);
                }

                return(Task.FromResult(new Tuple <bool, INuGetResource>(curResource != null, curResource)));
            }
Beispiel #2
0
        public override Task <Tuple <bool, INuGetResource> > TryCreate(SourceRepository source, CancellationToken token)
        {
            HttpSourceResource curResource = null;

            if (source.PackageSource.IsHttp)
            {
                curResource = _cache.GetOrAdd(source.PackageSource,
                                              (packageSource) => new HttpSourceResource(CreateSource(source, _fileSystem)));
            }

            return(Task.FromResult(new Tuple <bool, INuGetResource>(curResource != null, curResource)));
        }
Beispiel #3
0
        private void InitializeClient(string index)
        {
            indexUrl = new Uri(server.BaseAddress, index).AbsoluteUri;
            PackageSource packageSource = new PackageSource(indexUrl);

            _sourceRepository = new SourceRepository(packageSource, providers);
            _cacheContext     = new SourceCacheContext()
            {
                NoCache = true, MaxAge = new DateTimeOffset(), DirectDownload = true
            };
            _httpSource = _sourceRepository.GetResource <HttpSourceResource>();
            Assert.IsType <HttpSourceTestHost>(_httpSource.HttpSource);
        }
        public override Task <Tuple <bool, INuGetResource> > TryCreate(SourceRepository source, CancellationToken token)
        {
            Debug.Assert(source.PackageSource.IsHttp, "HTTP source requested for a non-http source.");

            HttpSourceResource curResource = null;

            if (source.PackageSource.IsHttp)
            {
                curResource = _cache.GetOrAdd(
                    source.PackageSource,
                    packageSource => new HttpSourceResource(HttpSourceTestHost.Create(source, _httpClient)));
            }

            return(Task.FromResult(new Tuple <bool, INuGetResource>(curResource != null, curResource)));
        }
        public override Task <Tuple <bool, INuGetResource> > TryCreate(SourceRepository source, CancellationToken token)
        {
            HttpSourceResource curResource = null;

            if (source.PackageSource.IsHttp)
            {
                curResource = _cache.GetOrAdd(
                    source.PackageSource,
                    packageSource => new HttpSourceResource(HttpSource.Create(
                                                                source,
                                                                NullThrottle.Instance,
                                                                _httpCacheUtility,
                                                                _concurrencyUtility)));
            }

            return(Task.FromResult(new Tuple <bool, INuGetResource>(curResource != null, curResource)));
        }
Beispiel #6
0
        public ValidationContext(
            PackageIdentity package,
            IEnumerable <CatalogIndexEntry> entries,
            IEnumerable <DeletionAuditEntry> deletionAuditEntries,
            ValidationSourceRepositories sourceRepositories,
            CollectorHttpClient client,
            CancellationToken token,
            ILogger <ValidationContext> logger)
        {
            if (deletionAuditEntries == null)
            {
                throw new ArgumentNullException(nameof(deletionAuditEntries));
            }

            if (sourceRepositories == null)
            {
                throw new ArgumentNullException(nameof(sourceRepositories));
            }

            Package = package ?? throw new ArgumentNullException(nameof(package));
            Entries = entries?.ToList();
            DeletionAuditEntries = deletionAuditEntries.ToList();
            Client            = client ?? throw new ArgumentNullException(nameof(client));
            CancellationToken = token;
            _logger           = logger ?? throw new ArgumentNullException(nameof(logger));
            _commonLogger     = logger.AsCommon();

            _databasetimestampMetadataResource           = sourceRepositories.V2.GetResource <IPackageTimestampMetadataResource>();
            _databasePackageRegistrationMetadataResource = sourceRepositories.V2.GetResource <IPackageRegistrationMetadataResource>();
            _v3PackageRegistrationMetadataResource       = sourceRepositories.V3.GetResource <IPackageRegistrationMetadataResource>();
            _httpSourceResource = sourceRepositories.V3.GetResource <HttpSourceResource>();

            _databaseIndex = new Lazy <Task <PackageRegistrationIndexMetadata> >(
                () => _databasePackageRegistrationMetadataResource.GetIndexAsync(Package, _commonLogger, CancellationToken));
            _v3Index = new Lazy <Task <PackageRegistrationIndexMetadata> >(
                () => _v3PackageRegistrationMetadataResource.GetIndexAsync(Package, _commonLogger, CancellationToken));

            _databaseLeaf = new Lazy <Task <PackageRegistrationLeafMetadata> >(
                () => _databasePackageRegistrationMetadataResource.GetLeafAsync(Package, _commonLogger, CancellationToken));
            _v3Leaf = new Lazy <Task <PackageRegistrationLeafMetadata> >(
                () => _v3PackageRegistrationMetadataResource.GetLeafAsync(Package, _commonLogger, CancellationToken));

            _timestampMetadataDatabase = new Lazy <Task <PackageTimestampMetadata> >(
                () => _databasetimestampMetadataResource.GetAsync(this));
        }
Beispiel #7
0
        public NuGetClientIntegrationTest(ITestOutputHelper helper)
        {
            Helper = helper ?? throw new ArgumentNullException(nameof(helper));
            server = TestServerBuilder.Create().TraceToTestOutputHelper(Helper, LogLevel.Error).Build();
            var providers = new List <Lazy <INuGetResourceProvider> >();

            providers.AddRange(Repository.Provider.GetCoreV3());
            providers.Add(new Lazy <INuGetResourceProvider>(() => new PackageMetadataResourceV3Provider()));
            _httpClient = server.CreateClient();
            providers.Insert(0, new Lazy <INuGetResourceProvider>(() => new HttpSourceResourceProviderTestHost(_httpClient)));

            indexUrl = new Uri(server.BaseAddress, IndexUrlString).AbsoluteUri;
            var packageSource = new PackageSource(indexUrl);

            _sourceRepository = new SourceRepository(packageSource, providers);
            _cacheContext     = new SourceCacheContext()
            {
                NoCache = true, MaxAge = new DateTimeOffset(), DirectDownload = true
            };
            _httpSource = _sourceRepository.GetResource <HttpSourceResource>();
            Assert.IsType <HttpSourceTestHost>(_httpSource.HttpSource);
        }
        public static async Task <long> PackageSize(this SourceRepository sourceRepository, PackageIdentity packageIdentity, CancellationToken cancellationToken)
        {
            if (null == sourceRepository || null == packageIdentity)
            {
                return(0);
            }

            using (SourceCacheContext cache = new SourceCacheContext
            {
                DirectDownload = true,
                NoCache = true
            })
            {
                try
                {
                    RegistrationResourceV3 registrationResource = await sourceRepository.GetResourceAsync <RegistrationResourceV3>(cancellationToken).ConfigureAwait(false);

                    JObject packageMetadata = await registrationResource.GetPackageMetadata(packageIdentity, cache, NullLogger.Instance, cancellationToken).ConfigureAwait(false);

                    if (null == packageMetadata)
                    {
                        throw new PackageNotFoundProtocolException(packageIdentity);
                    }
                    string catalogItemUrl = packageMetadata.Value <string>("@id");

                    HttpSourceResource httpSourceResource = await sourceRepository.GetResourceAsync <HttpSourceResource>(cancellationToken).ConfigureAwait(false);

                    JObject catalogItem = await httpSourceResource.HttpSource.GetJObjectAsync(new HttpSourceRequest(catalogItemUrl, NullLogger.Instance), NullLogger.Instance, cancellationToken).ConfigureAwait(false);

                    return(catalogItem.Value <long>("packageSize"));
                }
                catch (Exception ex) when(ex is FatalProtocolException || ex is HttpRequestException)
                {
                    return(0);
                }
            }
        }