public async Task <PublishDeltaResult> PublishProductDeltas(IEnumerable <Product> products, IEnumerable <DeletedProductSku> deletedProducts, IEnumerable <AccountPrice> accountPrices, IEnumerable <DeletedAccountPrice> deletedAccountPrices, string accessKey) { var deltas = new List <ProcessedProductDelta>(); var publishDeltaResult = new PublishDeltaResult(); var endpoint = RegionEndpoints.GetRegionEndpoints(region); var fullEndpoint = $"{endpoint.APIEndpoint}{deltaEndpointSuffix}"; try { deltas = ConversionManager.ProcessProductDeltas(products, deletedProducts, accountPrices, deletedAccountPrices, accessKey); } catch (Exception e) { return(new PublishDeltaResult { Success = false, Errors = new List <PublishDeltaError> { new PublishDeltaError { Error = e.Message, Skus = products.Count() > 0 ? products.Select(prod => prod.Sku) : null, DeletedSkus = deletedProducts.Count() > 0 ? deletedProducts.Select(deletedProd => deletedProd.Sku) : null, AccountPrices = accountPrices, DeletedAccountPrices = deletedAccountPrices } } }); } foreach (var delta in deltas) { try { var json = JSONSerialization.SerializeToJSON(delta); var deltaResult = await HttpCalls.Post <DeltaResult>(json, fullEndpoint); publishDeltaResult.Tokens.Add(deltaResult.Token); } catch (Exception e) { publishDeltaResult.Errors.Add(new PublishDeltaError { Error = e.Message, Skus = products.Count() > 0 ? products.Select(prod => prod.Sku) : null, DeletedSkus = deletedProducts.Count() > 0 ? deletedProducts.Select(deletedProd => deletedProd.Sku) : null, AccountPrices = accountPrices, DeletedAccountPrices = deletedAccountPrices }); } } publishDeltaResult.Success = publishDeltaResult.Errors.Count == 0; return(publishDeltaResult); }
public async Task <PublishDeltaResult> PublishDeltasAsync() { if (!_feedsValid) { return(new PublishDeltaResult { Success = false, Error = "Feeds not yet successfully validated" }); } var publishManager = new PublishManager(_accessKey, _secretKey, _region); var publishResult = new PublishDeltaResult(); if (!_productsPushed) { publishResult = await publishManager.PublishProductDeltas(_productCollection.GetItems(), _deletedProductCollection.GetItems(), _accountPriceCollection.GetItems(), _deletedAccountPriceCollection.GetItems(), _accessKey); _productsPushed = true; } return(publishResult); }