/// <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()));
 }
Beispiel #3
0
 /// <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()));
 }
Beispiel #4
0
 /// <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()));
 }
Beispiel #5
0
 /// <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()));
 }