public static async Task <IEnumerable <ProductDTO> > GetProductsByQueryAsync(string query) { try { var results = await HttpClientHelper.Get <WalmartMxSearchDto>(_UrlSearch + query); if (results?.Appendix?.SearchResults?.Content?.Any() != true) { return(Enumerable.Empty <ProductDTO>()); } var contents = results.Appendix.SearchResults.Content; var products = MapProducts(contents); return(products); } catch (Exception ex) { await QuisyDbRepository.AddLogAsync(LogType.Exception, $"Exception at {nameof(WalmartMexicoWebScraper)}, method: {nameof(WalmartMexicoWebScraper.GetProductsByQueryAsync)}. " + $"Query: {query}. Message {ex.Message}"); return(Enumerable.Empty <ProductDTO>()); } }
public async Task <IActionResult> Get(string provider, string query) { if (string.IsNullOrWhiteSpace(provider) || string.IsNullOrWhiteSpace(query)) { return(BadRequest()); } QuisyDbRepository.AddLogAsync(SqlDbRepository.Entities.LogType.Information, "Query: " + query); var cacheKey = BuildCacheKey(provider, query); if (_cache.TryGetValue <IEnumerable <ProductDTO> >(cacheKey, out var products)) { return(Ok(products)); } if (provider.ToLower() == "all") { products = await ScrapersFacade.GetAllProductsFromScrapersAsync(query); } else { products = await GetByProviderAsync(provider, query); } if (products?.Any() == true) { _cache.Set(cacheKey, products); } return(Ok(products)); }
public static async Task <IEnumerable <ProductDTO> > GetProductsByQueryAsync(string query) { var url = string.Format(_UrlSearch, _IndexesCount, query.Replace(" ", "+")); try { var results = await HttpClientHelper.Get <TargetSearchResultDto>(url); var targetProducts = results?.Data.Search?.Products; if (targetProducts?.Any() != true) { return(Enumerable.Empty <ProductDTO>()); } var products = MapProducts(targetProducts); return(products); } catch (Exception ex) { await QuisyDbRepository.AddLogAsync(LogType.Exception, $"Exception at {nameof(TargetWebApiScraper)}, method: {nameof(TargetWebApiScraper.GetProductsByQueryAsync)}. " + $"Query: {query}. Message {ex.Message}"); return(Enumerable.Empty <ProductDTO>()); } }
public static async Task <IEnumerable <ProductDTO> > GetProductsByQueryAsync(string query) { try { var doc = GetHtmlFromEbay(query); if (doc == null) { return(Enumerable.Empty <ProductDTO>()); } var products = ExtractProductFromHtml(doc); return(FormatProducts(products.ToList())); } catch (Exception ex) { await QuisyDbRepository.AddLogAsync(LogType.Exception, $"Exception at {nameof(CostcoWebScraper)}, method: {nameof(CostcoWebScraper.GetProductsByQueryAsync)}. " + $"Query: {query}. Message {ex.Message}"); return(Enumerable.Empty <ProductDTO>()); } }
private static async Task <IEnumerable <ProductDTO> > ExtractProductsFromDefaultWalmart(string query) { try { //var doc = LoadHtmlFromLocalPath(); var doc = GetHtmlFromWalmart(_UrlWithQuery, query); if (string.IsNullOrWhiteSpace(doc?.DocumentNode?.InnerHtml)) { QuisyDbRepository.AddLogAsync(LogType.Error, "No data from Walmart US: " + _UrlWithQuery + query); return(Enumerable.Empty <ProductDTO>()); } return(MapProducts(doc)); } catch (Exception ex) { await QuisyDbRepository.AddLogAsync(LogType.Exception, $"Exception at {nameof(WalmartWebScraper)}, method: {nameof(WalmartWebScraper.ExtractProductsFromDefaultWalmart)}. " + $"Query: {query}. Message {ex.Message}"); return(Enumerable.Empty <ProductDTO>()); } }
public static async Task <IEnumerable <ProductDTO> > GetProductsByQueryAsync(string query) { try { var results = await HttpClientHelper.Get <SamsSearchDto>(_UrlSearch + query); if (results?.Response?.Products?.Any() != true) { return(Enumerable.Empty <ProductDTO>()); } var samsProducts = results?.Response?.Products; var products = MapProducts(samsProducts); return(products); } catch (Exception ex) { await QuisyDbRepository.AddLogAsync(LogType.Exception, $"Exception at {nameof(SamsWebApiScraper)}, method: {nameof(SamsWebApiScraper.GetProductsByQueryAsync)}. " + $"Query: {query}. Message {ex.Message}"); return(Enumerable.Empty <ProductDTO>()); } }