Esempio n. 1
0
        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);
        }