Exemple #1
0
        public async Task GetAmazonInfoTest()
        {
            var response = await _amazonInfoParser.GetAndParseAmazonDocument("https://www.amazon.ca/Game-Thrones-Song-Fire-Book-ebook/dp/B000QCS8TW/");

            Assert.Greater(response.Reviews, 0);
            Assert.Greater(response.Rating, 0);
            Assert.IsNotEmpty(response.ImageUrl);
            Assert.IsNotEmpty(response.Description);
        }
        public IAsyncEnumerable <BookInfo> EnhanceBookInfos(IEnumerable <BookInfo> books) => new AsyncEnumerable <BookInfo>(async yield =>
        {
            foreach (var book in books.Where(book => book != null))
            {
                try
                {
                    var infoResponse = await _amazonInfoParser.GetAndParseAmazonDocument(book.AmazonUrl, yield.CancellationToken);
                    infoResponse.ApplyToBookInfo(book);

                    await yield.ReturnAsync(book);
                }
                catch (Exception ex)
                {
                    throw new AggregateException($"Book: {book.Title}\r\nURL: {book.AmazonUrl}\r\nError: {ex.Message}", ex);
                }
            }
        });