public async void GetItemsTokenPagination() { string endPoint = "http://MyRestApiEndPoint.com"; var maxRecordsParam = 20; var paginationParameterName = "token"; var pageSizeParemeterName = "limit"; var responseTokenName = "meta.next_token"; var orderByParameterName = "order_by"; var orderByParameterValue = "date"; var orderDirectionParameterName = "order"; var orderDirectionParameterValue = "DESC"; var paginationConfig = new TokenPagination(paginationParameterName, 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 async void Request() { try { IsBusy = true; HasErrors = false; NoItems = false; DataProviderRawData = string.Empty; Items.Clear(); var config = new RestApiDataConfig() { Url = new Uri(RestApiQuery), }; var paginationConfig = GetPaginationConfig(); if (paginationConfig != null) { config.PaginationConfig = paginationConfig; } var parser = new RestApiSampleParser(); parser.InitializeSample(RestApiMainRoot, TextProperty1, TextProperty2, ImageProperty); var items = await restApiDataProvider.LoadDataAsync(config, MaxRecordsParam, parser); NoItems = !items.Any(); foreach (var item in items) { Items.Add(item); } var rawParser = new RawParser(); var rawData = await rawDataProvider.LoadDataAsync(config, MaxRecordsParam, rawParser); DataProviderRawData = rawData.FirstOrDefault()?.Raw; } catch (Exception ex) { DataProviderRawData += ex.Message; DataProviderRawData += ex.StackTrace; HasErrors = true; } finally { IsBusy = false; } }