private List <AmazonInfoFeed> getProducctAmazonInfoFeeds(string filePath) { var records = new List <AmazonInfoFeed>(); using (var streamReader = new StreamReader(_systemJob.Parameters)) { var csvReader = new CsvReader(streamReader); csvReader.Configuration.HasHeaderRecord = false; while (csvReader.Read()) { var feed = new AmazonInfoFeed { EisSKU = csvReader.GetField(0), ASIN = csvReader.GetField(1), UPC = csvReader.GetField(2), }; // only add that has valid data if (feed.HasValidData) { records.Add(feed); } } } return(records); }
public static ProductAmazon ConstructProductAmazonFromLookupReult(Item item, AmazonInfoFeed infoFeed) { return(createProductAmazon(item, infoFeed.EisSKU)); }
public MarketplaceProduct GetProductInfo(AmazonInfoFeed infoFeed) { // create a WCF Amazon ECS client var binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport); binding.MaxReceivedMessageSize = int.MaxValue; var client = new AWSECommerceServicePortTypeClient( binding, new EndpointAddress("https://webservices.amazon.com/onca/soap?Service=AWSECommerceService")); var requests = new List <ItemLookupRequest>(); // add authentication to the ECS client client.ChannelFactory.Endpoint.Behaviors .Add(new AmazonSigningEndpointBehavior(_credential.SearchAccessKeyId, _credential.SearchSecretKey)); // create request item type for asin - WE ONLY ALLOW ASIN ONLY if (!string.IsNullOrEmpty(infoFeed.ASIN)) { requests.Add(createItemRequestLookup(infoFeed.ASIN, ItemLookupRequestIdType.ASIN)); } // return null if there is no request available if (!requests.Any()) { return(null); } // create an ItemSearch wrapper var itemLookUp = new ItemLookup(); itemLookUp.AssociateTag = _credential.AssociateId; itemLookUp.AWSAccessKeyId = _credential.SearchAccessKeyId; itemLookUp.Request = requests.ToArray(); // send the ItemLookup request var response = client.ItemLookup(itemLookUp); if (response == null || response.Items == null) { _logger.LogError(LogEntryType.AmazonProduct, string.Format("Item Lookup for {0} failed! Error Message: {1}", infoFeed.EisSKU, response.OperationRequest.Errors[0].Message), string.Empty); return(null); } AmazonService.Item itemResult = null; var errorMessages = new List <string>(); for (var i = 0; i < requests.Count; i++) { if (response.Items[i].Request.Errors != null) { errorMessages.Add(response.Items[i].Request.Errors[0].Message); } if (response.Items[i].Item != null) { // set the initial value for the item result itemResult = response.Items[i].Item[0]; foreach (var item in response.Items[i].Item) { // let's find from the result which has large image available if (item.LargeImage != null) { itemResult = item; break; } } } } // exit if there is no really result if (itemResult == null) { _logger.LogError(LogEntryType.AmazonProduct, string.Join("\n", errorMessages), string.Empty); return(null); } var product = parsedToMarketplaceProduct(itemResult); product.EisSKU = infoFeed.EisSKU; // log info _logger.LogInfo(LogEntryType.AmazonProduct, string.Format("Get product info for \'{0}\' was successful!", infoFeed.ASIN)); return(product); }
public ItemLookupResponse GetProductItemResponse(AmazonInfoFeed infoFeed) { return(getItemLookupResponse(new List <AmazonInfoFeed> { infoFeed })); }
public MarketplaceProduct GetProductInfo(AmazonInfoFeed infoFeed) { throw new NotImplementedException(); }