public new virtual async Task <ActionResult> View(ViewRequest request) { Trace.TraceInformation("[NuGet.View] Package: " + request.PackageID + " Source: " + request.Source); if (string.IsNullOrEmpty(request.PackageID)) { throw new UserActionException("Package Name is required during search", "CON.NUGET.VP1", new ArgumentNullException("PackageID")); } NuGetPackageViewResponse model = await _cache.ViewPackageInfo(request.PackageID, request.Source); return(View(model)); }
public async Task <NuGetPackageViewResponse> ViewPackageInfo(string packageID, string source) { if (string.IsNullOrEmpty(packageID)) { throw new ArgumentNullException("packageID"); } if (string.IsNullOrEmpty(source)) { throw new ArgumentNullException("source"); } NuGetFactory factory = new NuGetFactory(source); var model = new NuGetPackageViewResponse(); model.Request.PackageID = packageID; model.Request.SourceUrl = factory.SourceUrl; model.Request.Source = source; var metaResource = await factory.GetUIMetadata(); var versions = (await CacheGetAllVersionsOfPackage(factory, packageID)).Reverse().Take(10); foreach (var version in versions) { var packageVersion = new NuGetPackageVersion(); #region Meta var versionIdentity = new PackageIdentity(packageID, version); packageVersion = await CacheGetVersionMeta(metaResource, versionIdentity, true); #endregion #region Version Specific packageVersion.IsReleaseVersion = !version.IsPrerelease; packageVersion.IsLegacy = version.IsLegacyVersion; packageVersion.IsPreRelease = version.IsPrerelease; packageVersion.Version = version.ToNormalizedString(); packageVersion.OrderKey = packageVersion.LastUpdatedDate.ToString("yyyyMMdd") + packageVersion.Version; packageVersion.LastUpdated = (packageVersion.LastUpdatedDate == DateTime.MinValue) ? string.Empty : packageVersion.LastUpdatedDate.ToString("MMM dd, yyyy"); #endregion model.Versions.Add(packageVersion); } model.Versions = model.Versions.OrderByDescending(x => x.OrderKey).ToList(); model.LatestVersion = model.Versions.FirstOrDefault(); return(model); }