Exemple #1
0
        private async void GetProductListAsynchronously(List <Product> productList)
        {
            var scrapper = new OLXScrapper();
            var request  = new ProductRequest {
                Keyword = "3ds"
            };
            object threadLock = new object();


            var taskList = new List <Task <ProductResponse> >();

            for (var ctr = 1; ctr <= 3; ++ctr)
            {
                lock (threadLock)
                {
                    request.Page += 1;
                    taskList.Add(scrapper.GetProductListAsync(request));
                }
            }

            var result = await Task.WhenAll(taskList);

            foreach (var productResponse in result)
            {
                productList.AddRange(productResponse.ProductList);
            }
        }
Exemple #2
0
        public void TestLoadingProductListFromFile()
        {
            var scrapper = new OLXScrapper();
            var products = scrapper.LoadProductListFromFile("c:/olx.txt");

            Assert.IsTrue(products != null && products.AvailablePages > 0);
        }
Exemple #3
0
        private async void GetProductListAsync(ProductResponse response)
        {
            var scrapper = new OLXScrapper();
            var request  = new ProductRequest {
                Keyword = "ps4"
            };

            response = await scrapper.GetProductListAsync(request);
        }
Exemple #4
0
        public void TestGettingProductList()
        {
            var scrapper = new OLXScrapper();
            var request  = new ProductRequest {
                Keyword = "ps4"
            };
            var products = scrapper.GetProductList(request);

            Assert.IsTrue(products != null && products.ProductList.Any());
        }
        public async Task <IEnumerable <ProductResponse> > GetProductList(IEnumerable <ProductRequest> requests)
        {
            try
            {
                if (!requests.Any())
                {
                    return(null);
                }

                var threadLock = new object();
                var list       = new List <ProductResponse>();


                var taskList          = new List <Task <ProductResponse> >();
                var carousellScrapper = new CarousellScrapper();
                var olxScrapper       = new OLXScrapper();

                foreach (var request in requests)
                {
                    if (request.Source == ProductSource.Carousell)
                    {
                        taskList.Add(Task.Run(() =>
                        {
                            var result = String.IsNullOrEmpty(request.NextPage)
                                ? carousellScrapper.GetProductList(request)
                                : carousellScrapper.GetProductList(request.NextPage);
                            lock (threadLock)
                            {
                                list.Add(result);
                            }
                            return(result);
                        }));
                    }

                    if (request.Source == ProductSource.Olx)
                    {
                        var olxRequest = new ProductRequest {
                            Keyword = request.Keyword, Page = request.Page
                        };
                        taskList.Add(Task.Run(() =>
                        {
                            var result = olxScrapper.GetProductList(olxRequest);
                            lock (threadLock)
                            {
                                list.Add(result);
                            }
                            return(result);
                        }));
                    }
                }

                Task.WaitAll(taskList.ToArray());
                return(list);
            }
            catch (AggregateException arrException)
            {
                throw arrException;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }