/// <summary> /// Execute multiple Http GET requests and merge results in a single list /// </summary> async internal Task <IEnumerable <TItem> > GetAllTaskAsync <TItem>(string url) { const int perPage = 100; List <TItem> result = new List <TItem>(); PageFilter firstChunkFilter = new PageFilter(perPage, 1); IEnumerable <TItem> chunk = await GetTaskAsync <List <TItem> >(url + firstChunkFilter.ToQueryString()); Client.CancellationTokenSource.Token.ThrowIfCancellationRequested(); result.AddRange(chunk); int total = calculateCount(url); int pages = total / perPage + (total % perPage > 0 ? 1 : 0); for (int iPage = 1; iPage < pages; ++iPage) { PageFilter pageFilter = new PageFilter(perPage, iPage + 1); chunk = await GetTaskAsync <List <TItem> >(url + pageFilter.ToQueryString()); Client.CancellationTokenSource.Token.ThrowIfCancellationRequested(); result.AddRange(chunk); } return(result); }
/// <summary> /// Load a single page from a full list of versions from Server and de-serialize it /// </summary> public Task <IEnumerable <Version> > LoadTaskAsync(PageFilter pageFilter) { return(GetTaskAsync <IEnumerable <Version> >(BaseUrl + "?" + pageFilter.ToQueryString())); }
/// <summary> /// Load list of notes and total count of notes from Server and de-serialize it (async) /// </summary> public Task <Tuple <IEnumerable <Note>, int> > LoadAndCalculateTotalCountAsync( PageFilter pageFilter, SortFilter sortFilter) { return(GetAndCalculateCountTaskAsync <IEnumerable <Note> >( BaseUrl + "?" + pageFilter.ToQueryString() + "&" + sortFilter.ToQueryString())); }
/// <summary> /// Load a single page from a full list of merge requests from Server and de-serialize it (async) /// </summary> public Task <IEnumerable <MergeRequest> > LoadTaskAsync(MergeRequestsFilter filter, PageFilter pageFilter) { return(GetTaskAsync <IEnumerable <MergeRequest> >(BaseUrl + "?" + filter.ToQueryString() + "&" + pageFilter.ToQueryString())); }
/// <summary> /// Load list of notes from Server and de-serialize it (async) /// </summary> public Task <IEnumerable <Note> > LoadTaskAsync(PageFilter pageFilter, SortFilter sortFilter) { return(GetTaskAsync <IEnumerable <Note> >(BaseUrl + "?" + pageFilter.ToQueryString() + "&" + sortFilter.ToQueryString())); }