private static NewsArticlesRequest getValidatedRequestWithoutPageToken( NewsArticlesRequest request) => new NewsArticlesRequest(request.Symbols) { TimeInterval = request.TimeInterval, SortDirection = request.SortDirection, SendFullContentForItems = request.SendFullContentForItems, ExcludeItemsWithoutContent = request.ExcludeItemsWithoutContent } .WithPageSize(request.Pagination.Size ?? Pagination.MaxNewsPageSize);
public static async IAsyncEnumerable <INewsArticle> GetResponsesByItems( this NewsArticlesRequest singlePageOfItemsRequestWithEmptyPageToken, Func <NewsArticlesRequest, CancellationToken, Task <IPage <INewsArticle> > > getSinglePage, [EnumeratorCancellation] CancellationToken cancellationToken = default) { await foreach (var page in GetResponsesByPages( singlePageOfItemsRequestWithEmptyPageToken, getSinglePage, cancellationToken) .ConfigureAwait(false)) { foreach (var item in page) { yield return(item); } } }
public static IAsyncEnumerable <IReadOnlyList <INewsArticle> > GetNewsArticlesPagesAsAsyncEnumerable( this IAlpacaDataClient client, NewsArticlesRequest request, CancellationToken cancellationToken) => getValidatedRequestWithoutPageToken(request.EnsureNotNull(nameof(request))) .GetResponsesByPages(client.EnsureNotNull(nameof(client)).ListNewsArticlesAsync, cancellationToken);
public static IAsyncEnumerable <IReadOnlyList <INewsArticle> > GetNewsArticlesPagesAsAsyncEnumerable( this IAlpacaDataClient client, NewsArticlesRequest request) => GetNewsArticlesPagesAsAsyncEnumerable(client, request, CancellationToken.None);