Exemple #1
0
        public async Task <List <Product> > GetPartialProductsFromSubchapterAsync(string url, int prefixId,
                                                                                  int pageMax = int.MaxValue)
        {
            var firstPageProducts = await _skladchikApiClient.CallAsync(url + $"?prefix_id={prefixId}").ConfigureAwait(false);

            if (string.IsNullOrEmpty(firstPageProducts))
            {
                return(null);
            }

            var doc = new HtmlDocument();

            doc.LoadHtml(firstPageProducts);

            var pageCount     = Convert.ToInt32(GetNodeValue(doc, XPaths["PageCount"]) ?? "0");
            var lastPageIndex = pageCount >= pageMax ? pageMax : pageCount;

            if (lastPageIndex <= 0)
            {
                lastPageIndex = 1;
            }
            var links = new List <string>();

            for (var i = 1; i <= lastPageIndex; i++)
            {
                _skladchikApiClient.ThrowIfCancellationRequested();
                var productListUrl = url + $"/page-{i}?prefix_id={prefixId}";
                links.Add(productListUrl);
            }

            var products = await ParseProductFromPage(links).ConfigureAwait(false);

            return(products);
        }