/// <summary> /// Retrieve the <see cref="RemoteSourceDependencyInfo" /> for a registration. /// </summary> /// <returns>Returns an empty sequence if the package does not exist.</returns> public static async Task <IEnumerable <RemoteSourceDependencyInfo> > GetDependencies( HttpSource httpClient, Uri registrationUri, VersionRange range, ILogger log, CancellationToken token) { var ranges = await RegistrationUtility.LoadRanges(httpClient, registrationUri, range, log, token); var results = new HashSet <RemoteSourceDependencyInfo>(); foreach (var rangeObj in ranges) { if (rangeObj == null) { throw new InvalidDataException(registrationUri.AbsoluteUri); } foreach (JObject packageObj in rangeObj["items"]) { var catalogEntry = (JObject)packageObj["catalogEntry"]; var version = NuGetVersion.Parse(catalogEntry["version"].ToString()); if (range.Satisfies(version)) { results.Add(ProcessPackageVersion(packageObj, version)); } } } return(results); }
/// <summary> /// Returns inlined catalog entry items for each registration blob /// </summary> /// <remarks>The inlined entries are potentially going away soon</remarks> public virtual async Task <IEnumerable <JObject> > GetPackageMetadata( string packageId, VersionRange range, bool includePrerelease, bool includeUnlisted, SourceCacheContext cacheContext, Common.ILogger log, CancellationToken token) { var results = new List <JObject>(); var registrationUri = GetUri(packageId); var ranges = await RegistrationUtility.LoadRanges(_client, registrationUri, packageId, range, cacheContext, log, token); foreach (var rangeObj in ranges) { if (rangeObj == null) { throw new InvalidDataException(registrationUri.AbsoluteUri); } foreach (JObject packageObj in rangeObj["items"]) { var catalogEntry = (JObject)packageObj["catalogEntry"]; var version = NuGetVersion.Parse(catalogEntry["version"].ToString()); var listed = catalogEntry.GetBoolean("listed") ?? true; if (range.Satisfies(version) && (includePrerelease || !version.IsPrerelease) && (includeUnlisted || listed)) { // add in the download url if (packageObj["packageContent"] != null) { catalogEntry["packageContent"] = packageObj["packageContent"]; } results.Add(catalogEntry); } } } return(results); }