예제 #1
0
        public PackageSearchMetadataV2Feed(V2FeedPackageInfo package, MetadataReferenceCache metadataCache)
        {
            Authors                  = metadataCache.GetString(string.Join(", ", package.Authors));
            DependencySets           = package.DependencySets;
            Description              = package.Description;
            IconUrl                  = GetUriSafe(package.IconUrl);
            LicenseUrl               = GetUriSafe(package.LicenseUrl);
            Owners                   = metadataCache.GetString(string.Join(", ", package.Owners));
            PackageId                = package.Id;
            ProjectUrl               = GetUriSafe(package.ProjectUrl);
            Created                  = package.Created;
            LastEdited               = package.LastEdited;
            Published                = package.Published;
            ReportAbuseUrl           = GetUriSafe(package.ReportAbuseUrl);
            RequireLicenseAcceptance = package.RequireLicenseAcceptance;
            Summary                  = package.Summary;
            Tags     = package.Tags;
            Title    = package.Title;
            Version  = package.Version;
            IsListed = package.IsListed;

            long count;

            if (long.TryParse(package.DownloadCount, out count))
            {
                DownloadCount = count;
            }
        }
예제 #2
0
        /// <summary>
        /// Parse an entry into a V2FeedPackageInfo
        /// </summary>
        private V2FeedPackageInfo ParsePackage(string id, XElement element, MetadataReferenceCache metadataCache)
        {
            var properties   = element.Element(_xnameProperties);
            var idElement    = properties.Element(_xnameId);
            var titleElement = element.Element(_xnameTitle);

            // If 'Id' element exist, use its value as accurate package Id
            // Otherwise, use the value of 'title' if it exist
            // Use the given Id as final fallback if all elements above don't exist
            var identityId    = metadataCache.GetString(idElement?.Value ?? titleElement?.Value ?? id);
            var versionString = properties.Element(_xnameVersion).Value;
            var version       = metadataCache.GetVersion(metadataCache.GetString(versionString));
            var downloadUrl   = metadataCache.GetString(element.Element(_xnameContent).Attribute("src").Value);

            var title             = metadataCache.GetString(titleElement?.Value);
            var summary           = metadataCache.GetString(GetString(element, _xnameSummary));
            var description       = metadataCache.GetString(GetString(properties, _xnameDescription));
            var iconUrl           = metadataCache.GetString(GetString(properties, _xnameIconUrl));
            var licenseUrl        = metadataCache.GetString(GetString(properties, _xnameLicenseUrl));
            var projectUrl        = metadataCache.GetString(GetString(properties, _xnameProjectUrl));
            var galleryDetailsUrl = metadataCache.GetString(GetString(properties, _xnameGalleryDetailsUrl));
            var reportAbuseUrl    = metadataCache.GetString(GetString(properties, _xnameReportAbuseUrl));
            var tags         = metadataCache.GetString(GetString(properties, _xnameTags));
            var dependencies = metadataCache.GetString(GetString(properties, _xnameDependencies));

            var downloadCount            = metadataCache.GetString(GetString(properties, _xnameDownloadCount));
            var requireLicenseAcceptance = StringComparer.OrdinalIgnoreCase.Equals(bool.TrueString, GetString(properties, _xnameRequireLicenseAcceptance));

            var packageHash          = metadataCache.GetString(GetString(properties, _xnamePackageHash));
            var packageHashAlgorithm = metadataCache.GetString(GetString(properties, _xnamePackageHashAlgorithm));

            NuGetVersion minClientVersion = null;

            var minClientVersionString = GetString(properties, _xnameMinClientVersion);

            if (!string.IsNullOrEmpty(minClientVersionString))
            {
                if (NuGetVersion.TryParse(minClientVersionString, out minClientVersion))
                {
                    minClientVersion = metadataCache.GetVersion(minClientVersionString);
                }
            }

            var created    = GetDate(properties, _xnameCreated);
            var lastEdited = GetDate(properties, _xnameLastEdited);
            var published  = GetDate(properties, _xnamePublished);

            IEnumerable <string> owners  = null;
            IEnumerable <string> authors = null;

            var authorNode = element.Element(_xnameAuthor);

            if (authorNode != null)
            {
                authors = authorNode.Elements(_xnameName).Select(e => metadataCache.GetString(e.Value));
            }

            return(new V2FeedPackageInfo(new PackageIdentity(identityId, version), title, summary, description, authors,
                                         owners, iconUrl, licenseUrl, projectUrl, reportAbuseUrl, galleryDetailsUrl, tags, created, lastEdited,
                                         published, dependencies, requireLicenseAcceptance, downloadUrl, downloadCount, packageHash,
                                         packageHashAlgorithm, minClientVersion));
        }