Пример #1
0
        public static async Task <IEnumerable <string> > GetNugetPackageVersions(IPackageVersionEntry entry)
        {
            var searchMetadata = await GetPackageMetadatas(entry);

            SemanticVersion minSemanticVersion, maxSemanticVersionExclusive;

            if (!SemanticVersion.TryParse(entry.MinVersion, out minSemanticVersion))
            {
                throw new ArgumentException($"MinVersion {entry.MinVersion} in integration {entry.IntegrationName} could not be parsed into a NuGet Semantic Version");
            }

            if (!SemanticVersion.TryParse(entry.MaxVersionExclusive, out maxSemanticVersionExclusive))
            {
                throw new ArgumentException($"MaxVersion {entry.MaxVersionExclusive} in integration {entry.IntegrationName} could not be parsed into a NuGet Semantic Version");
            }

            List <string> packageVersions = new List <string>();

            foreach (var md in searchMetadata)
            {
                if (md.Identity.HasVersion && md.Identity.Version.CompareTo(minSemanticVersion) >= 0 && md.Identity.Version.CompareTo(maxSemanticVersionExclusive) < 0)
                {
                    packageVersions.Add(md.Identity.Version.ToNormalizedString());
                }
            }

            return(packageVersions);
        }
Пример #2
0
        public static async Task <IEnumerable <IPackageSearchMetadata> > GetPackageMetadatas(IPackageVersionEntry entry)
        {
            var packageSource = new PackageSource("https://api.nuget.org/v3/index.json");

            var providers = new List <Lazy <INuGetResourceProvider> >();

            providers.AddRange(Repository.Provider.GetCoreV3()); // Add v3 API support
            // providers.AddRange(Repository.Provider.GetCoreV2()); // Add v2 API support

            var sourceRepository        = new SourceRepository(packageSource, providers);
            var packageMetadataResource = await sourceRepository.GetResourceAsync <PackageMetadataResource>();

            var sourceCacheContext = new SourceCacheContext();
            var logger             = new Logger();

            var searchMetadata = await packageMetadataResource.GetMetadataAsync(
                entry.NugetPackageSearchName,
                includePrerelease : false,
                includeUnlisted : true,
                sourceCacheContext,
                logger,
                CancellationToken.None);

            return(searchMetadata);
        }