//property names are explained here: https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource internal static NuGetPackageSourceInfo FromJObject(JObject entry) { string id = entry.ToString("id") ?? throw new ArgumentException($"{nameof(entry)} doesn't have \"id\" property.", nameof(entry)); string version = entry.ToString("version") ?? throw new ArgumentException($"{nameof(entry)} doesn't have \"version\" property.", nameof(entry)); NuGetPackageSourceInfo sourceInfo = new NuGetPackageSourceInfo(id, version); sourceInfo.TotalDownloads = entry.ToInt32("totalDownloads"); sourceInfo.Owners = entry.Get <JToken>("owners").JTokenStringOrArrayToCollection(Array.Empty <string>()); sourceInfo.Verified = entry.ToBool("verified"); sourceInfo.Description = entry.ToString("description"); sourceInfo.IconUrl = entry.ToString("iconUrl"); return(sourceInfo); }
//property names are explained here: https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource internal static NuGetPackageSearchResult FromJObject(JObject entry) { NuGetPackageSearchResult searchResult = new NuGetPackageSearchResult(); searchResult.TotalHits = entry.ToInt32("totalHits"); var dataArray = entry.Get <JArray>("data"); if (dataArray != null) { foreach (JToken data in dataArray) { JObject?dataObj = data as JObject; if (dataObj != null) { searchResult.Data.Add(NuGetPackageSourceInfo.FromJObject(dataObj)); } } } return(searchResult); }