/// <summary> /// Gets the product asynchronous. /// </summary> /// <param name="client">The client.</param> /// <param name="url">The URL.</param> /// <param name="shop">The shop.</param> /// <returns>Wait-able task</returns> public static async Task <LRMProduct> GetProductAsync( HttpClient client, string url, LRMShop shop) { if (!url.Contains("leroymerlin.fr/v3/p/produits/")) { return(null); } string html = await ProcessUrlAsync(url, client).ConfigureAwait(false); if (html == null) { return(null); } int reference = GetReference(html); if (reference <= 0) { return(null); } LRMProduct product = new LRMProduct(reference, url); product.AddProductVarProp(shop, new LRMProductVarProp(GetPrice(html), GetStock(html))); return(product); }
/// <summary>Adds the or update product.</summary> /// <param name="product">The product.</param> /// <param name="shop">The shop.</param> public void AddOrUpdateProduct(LRMProduct product, LRMShop shop) { if (product == null || shop == null) { return; } // No such product, simply add this definition if (!Products.ContainsKey(product.Reference)) { Products[product.Reference] = product; } // Update existing definition else { var localProduct = Products[product.Reference]; foreach (var url in product.Urls) { localProduct.Urls.Add(url); } foreach (var productProductVarProp in product.ProductVarProps) { localProduct.AddProductVarProp( productProductVarProp.Key, productProductVarProp.Value); } } }