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); } } });