private void SetIconUrlFromFlatContainer(IBaseMetadataDocument document)
        {
            var provider = new FlatContainerPackagePathProvider(_options.Value.FlatContainerContainerName);
            var iconPath = provider.GetIconPath(document.PackageId, document.NormalizedVersion);

            document.IconUrl = new Uri(_options.Value.ParseFlatContainerBaseUrl(), iconPath).AbsoluteUri;
        }
        public void PopulateMetadata(
            IBaseMetadataDocument document,
            string packageId,
            Package package)
        {
            // If the version-specific ID is available, use it. Not all records have this value populated so fall back
            // to whatever package ID casing is provided.
            packageId = package.Id ?? packageId;

            document.Authors               = package.FlattenedAuthors;
            document.Copyright             = package.Copyright;
            document.Created               = AssumeUtc(package.Created);
            document.Description           = package.Description;
            document.FileSize              = package.PackageFileSize;
            document.FlattenedDependencies = package.FlattenedDependencies;
            document.Hash                      = package.Hash;
            document.HashAlgorithm             = package.HashAlgorithm;
            document.Language                  = package.Language;
            document.LastEdited                = AssumeUtc(package.LastEdited);
            document.MinClientVersion          = package.MinClientVersion;
            document.NormalizedVersion         = package.NormalizedVersion;
            document.OriginalVersion           = package.Version;
            document.PackageId                 = packageId;
            document.Prerelease                = package.IsPrerelease;
            document.ProjectUrl                = package.ProjectUrl;
            document.Published                 = package.Listed ? AssumeUtc(package.Published) : UnlistedPublished;
            document.ReleaseNotes              = package.ReleaseNotes;
            document.RequiresLicenseAcceptance = package.RequiresLicenseAcceptance;
            document.SemVerLevel               = package.SemVerLevelKey;
            document.SortableTitle             = GetSortableTitle(package.Title, packageId);
            document.Summary                   = package.Summary;
            document.Tags                      = package.Tags == null ? null : Utils.SplitTags(package.Tags);
            document.Title                     = GetTitle(package.Title, packageId);
            document.TokenizedPackageId        = packageId;

            if (package.LicenseExpression != null || package.EmbeddedLicenseType != EmbeddedLicenseFileType.Absent)
            {
                document.LicenseUrl = LicenseHelper.GetGalleryLicenseUrl(
                    packageId,
                    package.NormalizedVersion,
                    _options.Value.ParseGalleryBaseUrl());
            }
            else
            {
                document.LicenseUrl = package.LicenseUrl;
            }

            if (package.HasEmbeddedIcon ||
                (!string.IsNullOrWhiteSpace(package.IconUrl) && _options.Value.AllIconsInFlatContainer))
            {
                SetIconUrlFromFlatContainer(document);
            }
            else
            {
                document.IconUrl = package.IconUrl;
            }
        }
Exemple #3
0
        private static string TitleThenId(IBaseMetadataDocument document)
        {
            if (!string.IsNullOrWhiteSpace(document.Title))
            {
                return(document.Title);
            }

            return(document.PackageId);
        }
        public void PopulateMetadata(
            IBaseMetadataDocument document,
            string normalizedVersion,
            PackageDetailsCatalogLeaf leaf)
        {
            document.Authors               = leaf.Authors;
            document.Copyright             = leaf.Copyright;
            document.Created               = leaf.Created;
            document.Description           = leaf.Description;
            document.FileSize              = leaf.PackageSize;
            document.FlattenedDependencies = GetFlattenedDependencies(leaf);
            document.Hash                      = leaf.PackageHash;
            document.HashAlgorithm             = leaf.PackageHashAlgorithm;
            document.Language                  = leaf.Language;
            document.LastEdited                = leaf.LastEdited;
            document.MinClientVersion          = leaf.MinClientVersion;
            document.NormalizedVersion         = normalizedVersion;
            document.OriginalVersion           = leaf.VerbatimVersion;
            document.PackageId                 = leaf.PackageId;
            document.Prerelease                = leaf.IsPrerelease;
            document.ProjectUrl                = leaf.ProjectUrl;
            document.Published                 = leaf.Published;
            document.ReleaseNotes              = leaf.ReleaseNotes;
            document.RequiresLicenseAcceptance = leaf.RequireLicenseAcceptance;
            document.SemVerLevel               = leaf.IsSemVer2() ? SemVerLevelKey.SemVer2 : SemVerLevelKey.Unknown;
            document.SortableTitle             = GetSortableTitle(leaf.Title, leaf.PackageId);
            document.Summary                   = leaf.Summary;
            document.Tags                      = leaf.Tags == null ? null : leaf.Tags.ToArray();
            document.Title                     = GetTitle(leaf.Title, leaf.PackageId);
            document.TokenizedPackageId        = leaf.PackageId;

            if (leaf.LicenseExpression != null || leaf.LicenseFile != null)
            {
                document.LicenseUrl = LicenseHelper.GetGalleryLicenseUrl(
                    document.PackageId,
                    normalizedVersion,
                    _options.Value.ParseGalleryBaseUrl());
            }
            else
            {
                document.LicenseUrl = leaf.LicenseUrl;
            }

            if (leaf.IconFile != null ||
                (!string.IsNullOrWhiteSpace(leaf.IconUrl) && _options.Value.AllIconsInFlatContainer))
            {
                SetIconUrlFromFlatContainer(document);
            }
            else
            {
                document.IconUrl = leaf.IconUrl;
            }
        }
Exemple #5
0
        private string GetIconUrl(IBaseMetadataDocument document)
        {
            // If we mandate that all icon URLs come from flat container, generate the URL.
            if (_options.Value.AllIconsInFlatContainer &&
                !string.IsNullOrWhiteSpace(document.IconUrl))
            {
                var iconPath = _pathProvider.GetIconPath(document.PackageId, document.NormalizedVersion, normalize: false);
                return(new Uri(_flatContainerBaseUrl, iconPath).AbsoluteUri);
            }

            return(document.IconUrl);
        }
Exemple #6
0
 private V2SearchPackage BaseMetadataDocumentToPackage(IBaseMetadataDocument document)
 {
     return(new V2SearchPackage
     {
         PackageRegistration = new V2SearchPackageRegistration
         {
             Id = document.PackageId,
             DownloadCount = AuxiliaryData.GetTotalDownloadCount(document.PackageId),
             Verified = AuxiliaryData.IsVerified(document.PackageId),
             PopularityTransfers = AuxiliaryData.GetPopularityTransfers(document.PackageId),
         },
         Version = document.OriginalVersion ?? document.NormalizedVersion,
         NormalizedVersion = document.NormalizedVersion,
         Title = TitleThenId(document),
         Description = document.Description ?? string.Empty,
         Summary = document.Summary ?? string.Empty,
         Authors = document.Authors ?? string.Empty,
         Copyright = document.Copyright,
         Language = document.Language,
         Tags = document.Tags != null?string.Join(" ", document.Tags) : string.Empty,
                    ReleaseNotes = document.ReleaseNotes,
                    ProjectUrl = document.ProjectUrl,
                    IconUrl = GetIconUrl(document),
                    Created = document.Created.Value,
                    Published = document.Published.Value,
                    LastUpdated = document.Published.Value,
                    LastEdited = document.LastEdited,
                    DownloadCount = AuxiliaryData.GetDownloadCount(document.PackageId, document.NormalizedVersion),
                    FlattenedDependencies = document.FlattenedDependencies,
                    Dependencies = EmptyDependencies,
                    SupportedFrameworks = Array.Empty <string>(),
                    MinClientVersion = document.MinClientVersion,
                    Hash = document.Hash,
                    HashAlgorithm = document.HashAlgorithm,
                    PackageFileSize = document.FileSize.Value,
                    LicenseUrl = document.LicenseUrl,
                    RequiresLicenseAcceptance = document.RequiresLicenseAcceptance ?? false,
     });
 }