Example #1
0
        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);
        }
Example #2
0
 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();
 }