/// <summary> /// Searches the NuGet gallery for data matching the provided search term. /// </summary> /// <param name="searchTerm">Search term used to filter results from NuGet gallery.</param> /// <param name="filters">Additional details used to limit the search results.</param> /// <param name="skip">Record index of the starting record to be returned.</param> /// <param name="take">Number of result records to include in the search results.</param> /// <param name="log">Logger used to capture debugging information during the search.</param> /// <param name="cancellationToken">Token used to interrupt the search.</param> /// <returns>An instance of <see cref="PackageSearchResults"/> containing paging data and search results.</returns> public async Task <PackageSearchResults> SearchPageableAsync(string searchTerm, SearchFilter filters, int skip, int take, ILogger log, CancellationToken cancellationToken) { var response = await _searchResource.SearchPage(searchTerm, filters, skip, take, NullLogger.Instance, cancellationToken); return(new PackageSearchResults { TotalCount = (int)response["totalHits"], LastReopen = DateTimeOffset.Parse((string)response["lastReopen"]), Index = (string)response["index"], Results = response["data"] .Values <JObject>() .Select(t => JsonExtensions.FromJToken <PackageSearchMetadata>(t)) .Select(m => m.WithVersions(GetVersions(m, filters))) .ToArray() }); }