public UISearchResourceV3(RawSearchResourceV3 searchResource, UIMetadataResource metadataResource) : base() { _searchResource = searchResource; _metadataResource = metadataResource; }
private async Task<NuGetPackageVersion> CacheGetVersionMeta(UIMetadataResource metaResource, PackageIdentity versionIdentity, bool showDependencies) { string key = String.Format(@"{0}-{1}", versionIdentity.ToString(), showDependencies); if (base.IsInCache<NuGetPackageVersion>("GetVersionMeta", key)) { return Get<NuGetPackageVersion>("GetVersionMeta", key); } else { var meta = await metaResource.GetMetadata(versionIdentity, CancellationToken.None); var output = await GetVersionMeta(versionIdentity, metaResource, showDependencies); return Get<NuGetPackageVersion>("GetVersionMeta", key, () => { return output; }); } }
public async Task LoadPackageMetadaAsync(UIMetadataResource metadataResource, CancellationToken token) { var downloadCountDict = _searchResultPackage.Versions.ToDictionary( v => v.Version, v => v.DownloadCount); var dict = new Dictionary<NuGetVersion, DetailedPackageMetadata>(); if (metadataResource != null) { // load up the full details for each version try { var metadata = await metadataResource.GetMetadata(Id, true, false, token); foreach (var item in metadata) { if (!dict.ContainsKey(item.Identity.Version)) { int downloadCount; if (!downloadCountDict.TryGetValue(item.Identity.Version, out downloadCount)) { downloadCount = 0; } dict.Add(item.Identity.Version, new DetailedPackageMetadata(item, downloadCount)); } } } catch (InvalidOperationException) { // Ignore failures. } } _metadataDict = dict; DetailedPackageMetadata p; if (SelectedVersion != null && _metadataDict.TryGetValue(SelectedVersion.Version, out p)) { PackageMetadata = p; } }
private static async Task<NuGetPackageVersion> GetVersionMeta(PackageIdentity versionIdentity, UIMetadataResource metaResource, bool getDependencies) { var packageVersion = new NuGetPackageVersion(); var meta = await metaResource.GetMetadata(versionIdentity, CancellationToken.None); packageVersion.PackageID = meta.Identity.Id; packageVersion.Description = meta.Description; //Uri packageVersion.IconUri = meta.IconUrl; packageVersion.ProjectUri = meta.ProjectUrl == null ? "#" : meta.ProjectUrl.AbsoluteUri; packageVersion.LicenseUri = meta.LicenseUrl == null ? "#" : meta.LicenseUrl.AbsoluteUri; packageVersion.ReportAbuseUri = meta.ReportAbuseUrl.AbsoluteUri; //TODO:Currently NuGet API return blank packageVersion.Authors = String.Join(",", meta.Authors); packageVersion.Owners = String.Join(",", meta.Owners); //Supported Frameworks packageVersion.SupportedFrameworks = new List<NuGetFrameworkInfo>(); if (getDependencies) { foreach (var item in meta.DependencySets) { if (item.TargetFramework.IsUnsupported) continue; NuGetFrameworkInfo fxInfo = NuGetFrameworkInfo.CreateFrom(item.TargetFramework); var dependentOn = item.Packages.Count(); if (dependentOn > 0) fxInfo.DependencyCount = dependentOn; packageVersion.SupportedFrameworks.Add(fxInfo); } if (!packageVersion.SupportedFrameworks.Any()) { packageVersion.SupportedFrameworks.Add(NuGetFrameworkInfo.Any()); } } return packageVersion; }