public DisplayPackageViewModel(Package package, User currentUser, IOrderedEnumerable <Package> packageHistory)
            : this(package, currentUser, (string)null)
        {
            HasSemVer2Version    = NuGetVersion.IsSemVer2;
            HasSemVer2Dependency = package.Dependencies.ToList()
                                   .Where(pd => !string.IsNullOrEmpty(pd.VersionSpec))
                                   .Select(pd => VersionRange.Parse(pd.VersionSpec))
                                   .Any(p => (p.HasUpperBound && p.MaxVersion.IsSemVer2) || (p.HasLowerBound && p.MinVersion.IsSemVer2));

            Dependencies    = new DependencySetsViewModel(package.Dependencies);
            PackageVersions = packageHistory.Select(p => new DisplayPackageViewModel(p, currentUser, GetPushedBy(p, currentUser)));

            PushedBy        = GetPushedBy(package, currentUser);
            PackageFileSize = package.PackageFileSize;

            LatestSymbolsPackage = package.LatestSymbolPackage();

            if (packageHistory.Any())
            {
                // calculate the number of days since the package registration was created
                // round to the nearest integer, with a min value of 1
                // divide the total download count by this number
                TotalDaysSinceCreated   = Convert.ToInt32(Math.Max(1, Math.Round((DateTime.UtcNow - packageHistory.Min(p => p.Created)).TotalDays)));
                DownloadsPerDay         = TotalDownloadCount / TotalDaysSinceCreated; // for the package
                DownloadsPerDayLabel    = DownloadsPerDay < 1 ? "<1" : DownloadsPerDay.ToNuGetNumberString();
                IsDotnetToolPackageType = package.PackageTypes.Any(e => e.Name.Equals("DotnetTool", StringComparison.OrdinalIgnoreCase));
            }
        }
        public DisplayPackageViewModel(Package package, IOrderedEnumerable <Package> packageHistory, bool isVersionHistory)
            : base(package)
        {
            Copyright = package.Copyright;

            if (!isVersionHistory)
            {
                Dependencies    = new DependencySetsViewModel(package.Dependencies);
                PackageVersions = packageHistory.Select(p => new DisplayPackageViewModel(p, packageHistory, isVersionHistory: true));
            }

            DownloadCount = package.DownloadCount;
            LastEdited    = package.LastEdited;

            if (!isVersionHistory && packageHistory.Any())
            {
                // calculate the number of days since the package registration was created
                // round to the nearest integer, with a min value of 1
                // divide the total download count by this number
                TotalDaysSinceCreated = Convert.ToInt32(Math.Max(1, Math.Round((DateTime.UtcNow - packageHistory.Last().Created).TotalDays)));
                DownloadsPerDay       = TotalDownloadCount / TotalDaysSinceCreated; // for the package
            }
            else
            {
                TotalDaysSinceCreated = 0;
                DownloadsPerDay       = 0;
            }

            DownloadsPerDayLabel = DownloadsPerDay < 1 ? "<1" : DownloadsPerDay.ToNuGetNumberString();
        }
        public DisplayPackageViewModel(Package package, IOrderedEnumerable<Package> packageHistory, bool isVersionHistory)
            : base(package)
        {
            Copyright = package.Copyright;

            if (!isVersionHistory)
            {
                Dependencies = new DependencySetsViewModel(package.Dependencies);
                PackageVersions = packageHistory.Select(p => new DisplayPackageViewModel(p, packageHistory, isVersionHistory: true));
            }

            DownloadCount = package.DownloadCount;
            LastEdited = package.LastEdited;

            if (!isVersionHistory && packageHistory.Any())
            {
                // calculate the number of days since the package registration was created
                // round to the nearest integer, with a min value of 1
                // divide the total download count by this number
                TotalDaysSinceCreated = Convert.ToInt32(Math.Max(1, Math.Round((DateTime.UtcNow - packageHistory.Last().Created).TotalDays)));
                DownloadsPerDay = TotalDownloadCount / TotalDaysSinceCreated; // for the package
            }
            else
            {
                TotalDaysSinceCreated = 0;
                DownloadsPerDay = 0;
            }
        }
        public VerifyPackageRequest(PackageMetadata packageMetadata, IEnumerable <User> possibleOwners)
        {
            Id                   = packageMetadata.Id;
            Version              = packageMetadata.Version.ToFullStringSafe();
            OriginalVersion      = packageMetadata.Version.OriginalVersion;
            HasSemVer2Version    = packageMetadata.Version.IsSemVer2;
            HasSemVer2Dependency = packageMetadata.GetDependencyGroups().Any(d => d.Packages.Any(
                                                                                 p => (p.VersionRange.HasUpperBound && p.VersionRange.MaxVersion.IsSemVer2) ||
                                                                                 (p.VersionRange.HasLowerBound && p.VersionRange.MinVersion.IsSemVer2)));

            // Verifiable fields
            Language = packageMetadata.Language;
            MinClientVersionDisplay  = packageMetadata.MinClientVersion.ToFullStringSafe();
            FrameworkReferenceGroups = packageMetadata.GetFrameworkReferenceGroups();
            Dependencies             = new DependencySetsViewModel(packageMetadata.GetDependencyGroups().AsPackageDependencyEnumerable());
            DevelopmentDependency    = packageMetadata.GetValueFromMetadata("developmentDependency");
            Authors      = packageMetadata.Authors.Flatten();
            Copyright    = packageMetadata.Copyright;
            Description  = packageMetadata.Description;
            IconUrl      = packageMetadata.IconUrl.ToEncodedUrlStringOrNull();
            LicenseUrl   = packageMetadata.LicenseUrl.ToEncodedUrlStringOrNull();
            ProjectUrl   = packageMetadata.ProjectUrl.ToEncodedUrlStringOrNull();
            ReleaseNotes = packageMetadata.ReleaseNotes;
            RequiresLicenseAcceptance = packageMetadata.RequireLicenseAcceptance;
            Summary = packageMetadata.Summary;
            Tags    = PackageHelper.ParseTags(packageMetadata.Tags);
            Title   = packageMetadata.Title;

            // Editable server-state
            Listed = true;
            Edit   = new EditPackageVersionReadMeRequest();

            PossibleOwners = possibleOwners.Select(u => u.Username).ToList();
        }
Beispiel #5
0
        public DisplayPackageViewModel(Package package, User currentUser, PackageDeprecation deprecation)
            : this(package, currentUser, (string)null)
        {
            HasSemVer2Version    = NuGetVersion.IsSemVer2;
            HasSemVer2Dependency = package.Dependencies.ToList()
                                   .Where(pd => !string.IsNullOrEmpty(pd.VersionSpec))
                                   .Select(pd => VersionRange.Parse(pd.VersionSpec))
                                   .Any(p => (p.HasUpperBound && p.MaxVersion.IsSemVer2) || (p.HasLowerBound && p.MinVersion.IsSemVer2));

            Dependencies = new DependencySetsViewModel(package.Dependencies);

            var packageHistory = package
                                 .PackageRegistration
                                 .Packages
                                 .OrderByDescending(p => new NuGetVersion(p.Version))
                                 .ToList();

            PackageVersions = packageHistory.Select(p => new DisplayPackageViewModel(p, currentUser, GetPushedBy(p, currentUser))).ToList();

            PushedBy        = GetPushedBy(package, currentUser);
            PackageFileSize = package.PackageFileSize;

            LatestSymbolsPackage          = package.LatestSymbolPackage();
            LatestAvailableSymbolsPackage = LatestSymbolsPackage != null && LatestSymbolsPackage.StatusKey == PackageStatus.Available
                ? LatestSymbolsPackage
                : package.LatestAvailableSymbolPackage();

            if (packageHistory.Any())
            {
                // calculate the number of days since the package registration was created
                // round to the nearest integer, with a min value of 1
                // divide the total download count by this number
                TotalDaysSinceCreated   = Convert.ToInt32(Math.Max(1, Math.Round((DateTime.UtcNow - packageHistory.Min(p => p.Created)).TotalDays)));
                DownloadsPerDay         = TotalDownloadCount / TotalDaysSinceCreated; // for the package
                DownloadsPerDayLabel    = DownloadsPerDay < 1 ? "<1" : DownloadsPerDay.ToNuGetNumberString();
                IsDotnetToolPackageType = package.PackageTypes.Any(e => e.Name.Equals("DotnetTool", StringComparison.OrdinalIgnoreCase));
            }

            if (deprecation != null)
            {
                AlternatePackageId = deprecation.AlternatePackageRegistration?.Id;

                var alternatePackage = deprecation.AlternatePackage;
                if (alternatePackage != null)
                {
                    // A deprecation should not have both an alternate package registration and an alternate package.
                    // In case a deprecation does have both, we will hide the alternate package registration's ID in this model.
                    AlternatePackageId      = alternatePackage?.Id;
                    AlternatePackageVersion = alternatePackage?.Version;
                }

                CustomMessage = deprecation.CustomMessage;
            }
        }
Beispiel #6
0
 public DisplayPackageViewModel(Package package, bool isVersionHistory)
     : base(package)
 {
     Copyright = package.Copyright;
     if (!isVersionHistory)
     {
         Dependencies = new DependencySetsViewModel(package.Dependencies);
         PackageVersions = from p in package.PackageRegistration.Packages.ToList()
                           orderby new SemanticVersion(p.Version) descending
                           select new DisplayPackageViewModel(p, isVersionHistory: true);
     }
     DownloadCount = package.DownloadCount;
 }
        public DisplayPackageViewModel(Package package, IEnumerable <ScanResult> scanResults, bool isVersionHistory)
            : base(package)
        {
            Copyright = package.Copyright;
            if (!isVersionHistory)
            {
                Dependencies    = new DependencySetsViewModel(package.Dependencies);
                PackageVersions = from p in package.PackageRegistration.Packages.ToList()
                                  orderby new SemanticVersion(p.Version) descending
                                  select new DisplayPackageViewModel(p, null, isVersionHistory: true);
            }

            IsTrusted = package.PackageRegistration.IsTrusted;

            Files         = package.Files;
            ScanResults   = scanResults;
            DownloadCount = package.DownloadCount;
        }
        public DisplayPackageViewModel(Package package, IEnumerable<ScanResult> scanResults, bool isVersionHistory)
            : base(package)
        {
            Copyright = package.Copyright;
            if (!isVersionHistory)
            {
                Dependencies = new DependencySetsViewModel(package.Dependencies);
                PackageVersions = from p in package.PackageRegistration.Packages.ToList()
                                  orderby new SemanticVersion(p.Version) descending
                                  select new DisplayPackageViewModel(p, null, isVersionHistory: true);
            }

            IsTrusted = package.PackageRegistration.IsTrusted;

            Files = package.Files;
            ScanResults = scanResults;
            DownloadCount = package.DownloadCount;
        }
Beispiel #9
0
        public VerifyPackageRequest(PackageMetadata packageMetadata)
        {
            var dependencyGroups = packageMetadata.GetDependencyGroups();

            Id                   = packageMetadata.Id;
            Version              = packageMetadata.Version.ToFullStringSafe();
            OriginalVersion      = packageMetadata.Version.OriginalVersion;
            HasSemVer2Version    = packageMetadata.Version.IsSemVer2;
            HasSemVer2Dependency = dependencyGroups.Any(d => d.Packages.Any(
                                                            p => (p.VersionRange.HasUpperBound && p.VersionRange.MaxVersion.IsSemVer2) ||
                                                            (p.VersionRange.HasLowerBound && p.VersionRange.MinVersion.IsSemVer2)));
            LicenseUrl = packageMetadata.LicenseUrl.ToEncodedUrlStringOrNull();
            Listed     = true;
            Language   = packageMetadata.Language;
            MinClientVersionDisplay  = packageMetadata.MinClientVersion.ToFullStringSafe();
            FrameworkReferenceGroups = packageMetadata.GetFrameworkReferenceGroups();
            Dependencies             = new DependencySetsViewModel(packageMetadata.GetDependencyGroups().AsPackageDependencyEnumerable());
            DevelopmentDependency    = packageMetadata.GetValueFromMetadata("developmentDependency");
            Edit = new EditPackageVersionRequest(packageMetadata);
        }
        public DisplayPackageViewModel(Package package, bool isVersionHistory)
            : base(package)
        {
            Copyright = package.Copyright;
            if (!isVersionHistory)
            {
                Dependencies = new DependencySetsViewModel(package.Dependencies);
                PackageVersions = from p in package.PackageRegistration.Packages.ToList()
                                  orderby new SemanticVersion(p.Version) descending
                                  select new DisplayPackageViewModel(p, isVersionHistory: true);
            }

            IsTrusted = package.PackageRegistration.IsTrusted;

            Files = package.Files;
            DownloadCount = package.DownloadCount;

            PackageTestResultsStatus = package.PackageTestResultStatus;
            PackageTestResultsUrl = package.PackageTestResultUrl ?? string.Empty;
        }
Beispiel #11
0
        public VerifyPackageRequest(PackageMetadata packageMetadata, IEnumerable <User> possibleOwners, PackageRegistration existingPackageRegistration)
        {
            Id                   = packageMetadata.Id;
            Version              = packageMetadata.Version.ToFullStringSafe();
            OriginalVersion      = packageMetadata.Version.OriginalVersion;
            HasSemVer2Version    = packageMetadata.Version.IsSemVer2;
            HasSemVer2Dependency = packageMetadata.GetDependencyGroups().Any(d => d.Packages.Any(
                                                                                 p => (p.VersionRange.HasUpperBound && p.VersionRange.MaxVersion.IsSemVer2) ||
                                                                                 (p.VersionRange.HasLowerBound && p.VersionRange.MinVersion.IsSemVer2)));

            // Verifiable fields
            Language = packageMetadata.Language;
            MinClientVersionDisplay  = packageMetadata.MinClientVersion.ToFullStringSafe();
            FrameworkReferenceGroups = packageMetadata.GetFrameworkReferenceGroups();
            Dependencies             = new DependencySetsViewModel(packageMetadata.GetDependencyGroups().AsPackageDependencyEnumerable());
            DevelopmentDependency    = packageMetadata.DevelopmentDependency;
            Authors                   = packageMetadata.Authors.Flatten();
            Copyright                 = packageMetadata.Copyright;
            Description               = packageMetadata.Description;
            IconUrl                   = packageMetadata.IconUrl.ToEncodedUrlStringOrNull();
            LicenseUrl                = packageMetadata.LicenseUrl.ToEncodedUrlStringOrNull();
            LicenseExpression         = packageMetadata.LicenseMetadata?.Type == LicenseType.Expression ? packageMetadata.LicenseMetadata?.License : null;
            ProjectUrl                = packageMetadata.ProjectUrl.ToEncodedUrlStringOrNull();
            RepositoryUrl             = packageMetadata.RepositoryUrl.ToEncodedUrlStringOrNull();
            RepositoryType            = packageMetadata.RepositoryType;
            ReleaseNotes              = packageMetadata.ReleaseNotes;
            RequiresLicenseAcceptance = packageMetadata.RequireLicenseAcceptance;
            Summary                   = packageMetadata.Summary;
            Tags    = PackageHelper.ParseTags(packageMetadata.Tags);
            Title   = packageMetadata.Title;
            IsNewId = existingPackageRegistration == null;
            if (!IsNewId)
            {
                ExistingOwners = string.Join(", ", ParseUserList(existingPackageRegistration.Owners));
            }

            // Editable server-state
            Listed         = true;
            Edit           = new EditPackageVersionReadMeRequest();
            PossibleOwners = ParseUserList(possibleOwners);
        }
        public DisplayPackageViewModel(Package package, User currentUser, IOrderedEnumerable <Package> packageHistory, bool isVersionHistory)
            : base(package, currentUser)
        {
            Copyright = package.Copyright;

            if (!isVersionHistory)
            {
                HasSemVer2Version    = NuGetVersion.IsSemVer2;
                HasSemVer2Dependency = package.Dependencies.ToList()
                                       .Where(pd => !string.IsNullOrEmpty(pd.VersionSpec))
                                       .Select(pd => VersionRange.Parse(pd.VersionSpec))
                                       .Any(p => (p.HasUpperBound && p.MaxVersion.IsSemVer2) || (p.HasLowerBound && p.MinVersion.IsSemVer2));

                Dependencies    = new DependencySetsViewModel(package.Dependencies);
                PackageVersions = packageHistory.Select(p => new DisplayPackageViewModel(p, currentUser, packageHistory, isVersionHistory: true));
            }

            DownloadCount = package.DownloadCount;
            LastEdited    = package.LastEdited;

            if (!isVersionHistory && packageHistory.Any())
            {
                // calculate the number of days since the package registration was created
                // round to the nearest integer, with a min value of 1
                // divide the total download count by this number
                TotalDaysSinceCreated = Convert.ToInt32(Math.Max(1, Math.Round((DateTime.UtcNow - packageHistory.Min(p => p.Created)).TotalDays)));
                DownloadsPerDay       = TotalDownloadCount / TotalDaysSinceCreated; // for the package
            }
            else
            {
                TotalDaysSinceCreated = 0;
                DownloadsPerDay       = 0;
            }

            DownloadsPerDayLabel = DownloadsPerDay < 1 ? "<1" : DownloadsPerDay.ToNuGetNumberString();
        }