private IPagination GetPaginationConfig() { IPagination pagination = null; switch (PaginationParameterType) { case PaginationParameterType.PageNumber: pagination = new PageNumberPagination(PaginationParameterName, IsZeroIndexed, PageSizeParameterName); break; case PaginationParameterType.ItemOffset: pagination = new ItemOffsetPagination(PaginationParameterName, IsZeroIndexed, PageSizeParameterName, MaxRecordsParam); break; case PaginationParameterType.Token: pagination = new TokenPagination(PaginationParameterName, ResponseTokenName, PageSizeParameterName); break; case PaginationParameterType.NextPageUrl: pagination = new NextPageUrlPagination(ResponseTokenName, PageSizeParameterName); break; case PaginationParameterType.None: default: return(null); } pagination = GetSorting(pagination); return(pagination); }
public async Task LoadDataNextPageUrlPagination_NextPagePath() { var pagination = new NextPageUrlPagination("invalid", null); var config = new RestApiDataConfig { Url = new Uri(@"https://graph.facebook.com/v2.5/8195378771/posts?&access_token=351842111678417|74b187b46cf37a8ef6349b990bc039c2&fields=id,message,from,created_time,link,full_picture"), PaginationConfig = pagination }; var dataProvider = new RestApiDataProvider(); IEnumerable <Facebook.FacebookSchema> data = await dataProvider.LoadDataAsync(config, 20, new Facebook.FacebookParser()); Assert.IsTrue(dataProvider.HasMoreItems, $"{nameof(dataProvider.HasMoreItems)} is false"); ArgumentNullException exception = await ExceptionsAssert.ThrowsAsync <ArgumentNullException>(async() => await dataProvider.LoadMoreDataAsync <Facebook.FacebookSchema>()); }
public async Task LoadDataNextPageUrlPagination() { var pagination = new NextPageUrlPagination("paging.next", string.Empty); var config = new RestApiDataConfig { Url = new Uri(@"https://graph.facebook.com/v2.5/8195378771/posts?&access_token=351842111678417|74b187b46cf37a8ef6349b990bc039c2&fields=id,message,from,created_time,link,full_picture"), PaginationConfig = pagination }; var dataProvider = new RestApiDataProvider(); IEnumerable <Facebook.FacebookSchema> data = await dataProvider.LoadDataAsync(config, 20, new Facebook.FacebookParser()); Assert.IsTrue(dataProvider.HasMoreItems, $"{nameof(dataProvider.HasMoreItems)} is false"); data = await dataProvider.LoadMoreDataAsync <Facebook.FacebookSchema>(); Assert.IsNotNull(data); Assert.AreNotEqual(data.Count(), 0); }
public async void GetItemsNextUrlPagination() { string endPoint = "http://MyRestApiEndPoint.com"; var maxRecordsParam = 20; var responseTokenName = "meta.next_page"; var pageSizeParemeterName = "limit"; var orderByParameterName = "order_by"; var orderByParameterValue = "date"; var orderDirectionParameterName = "order"; var orderDirectionParameterValue = "DESC"; var paginationConfig = new NextPageUrlPagination(responseTokenName, pageSizeParemeterName) { OrderByParameterName = orderByParameterName, OrderByParameterValue = orderByParameterValue, OrderDirectionParameterName = orderDirectionParameterName, OrderDirectionParameterValue = orderDirectionParameterValue }; var config = new RestApiDataConfig() { Url = new Uri(endPoint), PaginationConfig = paginationConfig }; var parser = new JsonParser <MySchema>(); _dataProvider = new RestApiDataProvider(); var items = await _dataProvider.LoadDataAsync(config, maxRecordsParam, parser); foreach (var item in items) { Items.Add(item); } }