示例#1
0
        public async void GetItemsPageNumberPagination()
        {
            string endPoint                     = "http://MyRestApiEndPoint.com";
            var    maxRecordsParam              = 20;
            var    paginationParameterName      = "page";
            var    pageSizeParemeterName        = "limit";
            var    orderByParameterName         = "order_by";
            var    orderByParameterValue        = "date";
            var    orderDirectionParameterName  = "order";
            var    orderDirectionParameterValue = "DESC";

            var paginationConfig = new PageNumberPagination(paginationParameterName, false, 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);
            }
        }
示例#2
0
        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);
        }
示例#3
0
        public async Task LoadDataPageNumberPagination_NullParameters()
        {
            var pagination = new PageNumberPagination(null, false, null);
            var config     = new RestApiDataConfig
            {
                Url = new Uri(@"https://public-api.wordpress.com/rest/v1.1/sites/en.blog.wordpress.com/posts/"),
                PaginationConfig = pagination
            };

            var dataProvider = new RestApiDataProvider();
            IEnumerable <WordPress.WordPressSchema> data = await dataProvider.LoadDataAsync(config, 20, new WordPress.WordPressParser());

            Assert.IsTrue(dataProvider.HasMoreItems, $"{nameof(dataProvider.HasMoreItems)} is false");
            data = await dataProvider.LoadMoreDataAsync <WordPress.WordPressSchema>();

            Assert.IsNotNull(data);
            Assert.AreNotEqual(data.Count(), 0);
        }