diff --git a/CryptoExchange.Net/ExchangeHelpers.cs b/CryptoExchange.Net/ExchangeHelpers.cs index e8bc445..4efff1d 100644 --- a/CryptoExchange.Net/ExchangeHelpers.cs +++ b/CryptoExchange.Net/ExchangeHelpers.cs @@ -351,6 +351,7 @@ namespace CryptoExchange.Net return data; } + public static bool CheckForNextPage( int resultCount, IEnumerable timestamps, @@ -359,7 +360,7 @@ namespace CryptoExchange.Net int limit, DataDirection paginationDirection) { - if (resultCount < limit) + if (limit <= resultCount) return false; if (!timestamps.Any()) @@ -385,7 +386,8 @@ namespace CryptoExchange.Net { FromId, Time, - Offset + Offset, + Page } public enum TimeParameterSetType @@ -410,6 +412,14 @@ namespace CryptoExchange.Net return new PaginationParameters { FromId = pageRequest.FromId }; } + public static PaginationParameters ApplyPageFilter(PageRequest? pageRequest) + { + if (pageRequest?.Page == null || pageRequest.Page == 0) + return new PaginationParameters() { Page = 1 }; + + return new PaginationParameters { Page = pageRequest.Page }; + } + public static PaginationParameters ApplyOffsetFilter(PageRequest pageRequest) { if (pageRequest.Offset == null) @@ -440,6 +450,20 @@ namespace CryptoExchange.Net }; } + // Without date/time filter + public static PageRequest? GetNextPageRequestPageSimple( + PageRequest? currentPageRequest, + bool hasNextPage, + IEnumerable timeSelector, + DateTime? requestStartTime, + DateTime? requestEndTime + ) + { + if (CheckForNextPage(timeSelector, requestStartTime, requestEndTime, limit, direction)) + { + } + } + public static PageRequest? GetNextPageRequest( Func normalNextPageCallback, int responseLength, @@ -539,6 +563,9 @@ namespace CryptoExchange.Net return result; } + if (filterType == PaginationFilterType.Page) + return ApplyPageFilter(pageRequest); + if (filterType == PaginationFilterType.FromId) // From id doesn't need any other parameters return ApplyFromIdFilter(pageRequest); diff --git a/CryptoExchange.Net/SharedApis/Models/Pagination.cs b/CryptoExchange.Net/SharedApis/Models/Pagination.cs index 5c31fe0..30ba2e5 100644 --- a/CryptoExchange.Net/SharedApis/Models/Pagination.cs +++ b/CryptoExchange.Net/SharedApis/Models/Pagination.cs @@ -18,6 +18,7 @@ namespace CryptoExchange.Net.SharedApis public DateTime? EndTime { get; set; } public string? FromId { get; set; } public int? Offset { get; set; } + public int? Page { get; set; } } public class PageRequest {