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); } }
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; }