mirror of
https://github.com/AlexMacocian/Net.Sdk.Web.Extensions.git
synced 2026-07-15 13:39:29 +00:00
36 lines
1.0 KiB
C#
36 lines
1.0 KiB
C#
using Azure;
|
|
|
|
namespace Net.Sdk.Web.Extensions.Azure;
|
|
|
|
internal sealed class InterceptingPageable<T> : Pageable<T> where T : notnull
|
|
{
|
|
private readonly Action<Page<T>> interceptPage;
|
|
private readonly Action interceptSuccess;
|
|
private readonly Pageable<T> originalPageable;
|
|
|
|
public InterceptingPageable(Pageable<T> originalPageable, Action<Page<T>> interceptPage, Action interceptSuccess)
|
|
{
|
|
this.originalPageable = originalPageable;
|
|
this.interceptPage = interceptPage;
|
|
this.interceptSuccess = interceptSuccess;
|
|
}
|
|
|
|
public override IEnumerable<Page<T>> AsPages(string? continuationToken = null, int? pageSizeHint = null)
|
|
{
|
|
foreach (var page in this.originalPageable.AsPages(continuationToken, pageSizeHint))
|
|
{
|
|
this.interceptPage(page);
|
|
yield return page;
|
|
}
|
|
}
|
|
|
|
public override IEnumerator<T> GetEnumerator()
|
|
{
|
|
foreach (var item in this.originalPageable)
|
|
{
|
|
this.interceptSuccess();
|
|
yield return item;
|
|
}
|
|
}
|
|
}
|