using Azure; namespace Net.Sdk.Web.Extensions.Azure; internal sealed class InterceptingPageable : Pageable where T : notnull { private readonly Action> interceptPage; private readonly Action interceptSuccess; private readonly Pageable originalPageable; public InterceptingPageable(Pageable originalPageable, Action> interceptPage, Action interceptSuccess) { this.originalPageable = originalPageable; this.interceptPage = interceptPage; this.interceptSuccess = interceptSuccess; } public override IEnumerable> 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 GetEnumerator() { foreach (var item in this.originalPageable) { this.interceptSuccess(); yield return item; } } }