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); }
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); }