Exemplo n.º 1
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);
        }
Exemplo n.º 2
0
        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>());
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
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);
            }
        }