Example #1
0
        /// <summary>
        /// Find the latest version of the package
        /// </summary>
        /// <param name="includePrerelease">include versions with prerelease labels</param>
        /// <param name="includeUnlisted">not implemented yet</param>
        public override async Task <IEnumerable <KeyValuePair <string, NuGetVersion> > > GetLatestVersions(IEnumerable <string> packageIds, bool includePrerelease, bool includeUnlisted, CancellationToken token)
        {
            List <KeyValuePair <string, NuGetVersion> > results = new List <KeyValuePair <string, NuGetVersion> >();

            foreach (var id in packageIds)
            {
                var catalogEntries = await _regResource.GetPackageMetadata(id, includePrerelease, includeUnlisted, token);

                var allVersions = catalogEntries.Select(p => NuGetVersion.Parse(p["version"].ToString()));

                // find the latest
                var latest = allVersions.OrderByDescending(p => p, VersionComparer.VersionRelease).FirstOrDefault();

                results.Add(new KeyValuePair <string, NuGetVersion>(id, latest));
            }

            return(results);
        }
        public override async Task <Uri> GetDownloadUrl(PackageIdentity identity, CancellationToken token)
        {
            Uri downloadUri = null;

            var blob = await _regResource.GetPackageMetadata(identity, token);

            if (blob != null && blob["packageContent"] != null)
            {
                downloadUri = new Uri(blob["packageContent"].ToString());
            }

            return(downloadUri);
        }