public void SubmitFeedTest()
        {
            MarketplaceWebServiceConfig config = new MarketplaceWebServiceConfig();

            config.ServiceURL = serviceURL;

            MarketplaceWebService.MarketplaceWebService service =
                new MarketplaceWebServiceClient(
                    creds.AccessKey,
                    creds.SecretKey,
                    appName,
                    appVersion,
                    config);

            SubmitFeedRequest submitFeedRequest = new SubmitFeedRequest();

            submitFeedRequest.MWSAuthToken = mWSAuthToken;
            submitFeedRequest.Merchant     = sellerId;
            submitFeedRequest.FeedType     = "_POST_PRODUCT_PRICING_DATA_";
            AmazonEnvelope priceFeed = PriceFeedBuilder.Build();

            priceFeed.Message.First().MessageID = "1";
            priceFeed.Message.First().Price.StandardPrice.Value = 67.00m;
            priceFeed.Message.First().Price.SKU = "8E-5FMM-A9HN";             //priceFeed.Message.Add(new Message() { MessageID = "123" });
            priceFeed.Header.MerchantIdentifier = sellerId;
            var stream = Util.GenerateStreamFromXml <AmazonEnvelope>(priceFeed);

            submitFeedRequest.FeedContent = stream;
            submitFeedRequest.ContentMD5  = Util.CalculateContentMD5(stream);
            SubmitFeedResponse submitFeedResponse = service.SubmitFeed(submitFeedRequest);

            //Util.GenerateFromXml<AmazonEnvelope>(priceFeed);

            Console.WriteLine(submitFeedResponse.SubmitFeedResult.FeedSubmissionInfo.FeedSubmissionId);
        }
Example #2
0
        /// <summary>
        /// Submit the feed and get the stream response with the specified XML file path and feed type
        /// </summary>
        /// <param name="xmlFileName">The full file path of the XML</param>
        /// <param name="feedType">The type of the feed</param>
        /// <returns>Returns the stream for XML</returns>
        public Stream SubmitFeedAndGetResponse(string xmlFileName, AmazonFeedType feedType)
        {
            var submitFeedRequest = createSubmitFeedRequest(xmlFileName, feedType);

            // send the feed request to the mws
            var submitFeedResponse = _amazonCient.SubmitFeed(submitFeedRequest);

            WaitForGetFeedSubmissionListToCompleted(submitFeedResponse.SubmitFeedResult.FeedSubmissionInfo.FeedSubmissionId);

            return(GetFeedSubmissionResult(submitFeedResponse.SubmitFeedResult.FeedSubmissionInfo.FeedSubmissionId));
        }
Example #3
0
        public string Create()
        {
            var client = new MarketplaceWebServiceClient(_accessKey, _secretKey, new MarketplaceWebServiceConfig
            {
                ServiceURL = _serviceUrl
            });
            var req = new Claytondus.AmazonMWS.Feeds.Model.SubmitFeedRequest();

            req.Merchant = _merchantId;
            req.WithMarketplaceIdList(new Claytondus.AmazonMWS.Feeds.Model.IdList {
                Id = new List <string> {
                }
            });
            var res = client.SubmitFeed(req);

            return(string.Empty);
        }
		public void SubmitFeedTestRedCarpet()
		{
			MarketplaceWebServiceConfig config = new MarketplaceWebServiceConfig();
			config.ServiceURL = serviceURL;

			MarketplaceWebService.MarketplaceWebService service =
				new MarketplaceWebServiceClient(
					creds.AccessKey,
					creds.SecretKey,
					appName,
					appVersion,
					config);

			SubmitFeedRequest submitFeedRequest = new SubmitFeedRequest();
			submitFeedRequest.MWSAuthToken = mWSAuthToken;
			submitFeedRequest.Merchant = sellerId;
			submitFeedRequest.FeedType = "_POST_PRODUCT_PRICING_DATA_";
			AmazonEnvelope priceFeed = PriceFeedBuilder.Build();
			Message msg = PriceFeedBuilder.BuildMessage();
			msg.MessageID = "1";
			msg.Price.StandardPrice.Value = 154.40m;
			msg.Price.SKU = "HEWD9P29A";
			priceFeed.Message.Add(msg);

			Message msg2 = PriceFeedBuilder.BuildMessage();
			msg2.MessageID = "2";
			msg2.Price.StandardPrice.Value = 62.05m;
			msg2.Price.SKU = "HEW35S";
			priceFeed.Message.Add(msg2);

			priceFeed.Header.MerchantIdentifier = sellerId;
			var stream = Util.GenerateStreamFromXml<AmazonEnvelope>(priceFeed);

			Util.GenerateXmlFile<AmazonEnvelope>(priceFeed);

			submitFeedRequest.FeedContent = stream;
			submitFeedRequest.ContentMD5 = Util.CalculateContentMD5(stream);
			SubmitFeedResponse submitFeedResponse = service.SubmitFeed(submitFeedRequest);


			Console.WriteLine(submitFeedResponse.SubmitFeedResult.FeedSubmissionInfo.FeedSubmissionId);
		}
Example #5
0
        public FeedSubmissionInfo SubmitFeed(EFeedType FeedType, string FeedContent, bool PurgeAndReplace)
        {
            switch (PurgeAndReplace)
            {
            case true:
                this.Throttle(ERequestType.SubmitFeedPurgeAndReplace);
                break;

            case false:
                this.Throttle();
                break;
            }

            AmazonCredential            Credentials = this.GetCredential();
            MarketplaceWebServiceClient Client      = this.GetClient(Credentials);
            SubmitFeedRequest           Request     = new SubmitFeedRequest()
            {
                Merchant        = Credentials.MerchantID,
                FeedType        = EnumStringHandler.GetEnumString <EFeedType>(FeedType),
                FeedContent     = new MemoryStream(Encoding.ASCII.GetBytes(FeedContent)),
                PurgeAndReplace = PurgeAndReplace
            };
            SubmitFeedResponse Response = Client.SubmitFeed(Request);

            if (Response.IsSetSubmitFeedResult())
            {
                SubmitFeedResult Result = Response.SubmitFeedResult;
                if (Result.IsSetFeedSubmissionInfo())
                {
                    return(Result.FeedSubmissionInfo);
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                return(null);
            }
        }
        public Stream SubmitFeedAndGetResponse(Stream dataStream, string feedType)
        {
            var submitFeedRequest = CreateSubmitFeedRequest(dataStream, feedType);
            SubmitFeedResponse submitFeedResponse = null;

            try
            {
                submitFeedResponse = _AmazonClient.SubmitFeed(submitFeedRequest);
            }
            catch (MarketplaceWebServiceException ex)
            {
                // Make sure the file stream gets closed after everything.
                dataStream.Close();
                throw ex;
            }
            // Make sure the file stream gets closed after everything.
            dataStream.Close();

            // If the previous errors out then don't run this. Return an exception.
            WaitForGetFeedSubmissionListToComplete(submitFeedResponse.SubmitFeedResult.FeedSubmissionInfo.FeedSubmissionId);

            return(GetFeedSubmissionResultStream(submitFeedResponse.SubmitFeedResult.FeedSubmissionInfo.FeedSubmissionId));
        }
        public static string SubmitAmazonTrackingFeed(string filepath, string merchantId, string marketplaceId, string accessKeyId, string secretAccessKey)
        {
            string            feedSubmissionId = "";
            SubmitFeedRequest request          = new SubmitFeedRequest();

            request.Merchant             = merchantId;
            request.MarketplaceIdList    = new IdList();
            request.MarketplaceIdList.Id = new List <string>(new string[] { marketplaceId });
            request.FeedContent          = File.Open(filepath, FileMode.Open, FileAccess.Read);
            request.ContentMD5           = MarketplaceWebServiceClient.CalculateContentMD5(request.FeedContent);
            request.FeedContent.Position = 0;
            request.FeedType             = "_POST_ORDER_FULFILLMENT_DATA_";

            const string applicationName       = "<Your Application Name>";
            const string applicationVersion    = "<Your Application Version>";
            MarketplaceWebServiceConfig config = new MarketplaceWebServiceConfig();

            config.ServiceURL = "https://mws.amazonservices.com";
            config.SetUserAgentHeader(
                applicationName,
                applicationVersion,
                "C#",
                "<Parameter 1>", "<Parameter 2>");
            MarketplaceWebService.MarketplaceWebService service = new MarketplaceWebServiceClient(accessKeyId, secretAccessKey, config);

            try
            {
                SubmitFeedResponse response = service.SubmitFeed(request);


                Console.WriteLine("Service Response");
                Console.WriteLine("=============================================================================");
                Console.WriteLine();

                Console.WriteLine("        SubmitFeedResponse");
                if (response.IsSetSubmitFeedResult())
                {
                    Console.WriteLine("            SubmitFeedResult");
                    SubmitFeedResult submitFeedResult = response.SubmitFeedResult;
                    if (submitFeedResult.IsSetFeedSubmissionInfo())
                    {
                        Console.WriteLine("                FeedSubmissionInfo");
                        FeedSubmissionInfo feedSubmissionInfo = submitFeedResult.FeedSubmissionInfo;
                        if (feedSubmissionInfo.IsSetFeedSubmissionId())
                        {
                            Console.WriteLine("                    FeedSubmissionId");
                            Console.WriteLine("                        {0}", feedSubmissionInfo.FeedSubmissionId);
                            feedSubmissionId = feedSubmissionInfo.FeedSubmissionId;
                        }
                        if (feedSubmissionInfo.IsSetFeedType())
                        {
                            Console.WriteLine("                    FeedType");
                            Console.WriteLine("                        {0}", feedSubmissionInfo.FeedType);
                        }
                        if (feedSubmissionInfo.IsSetSubmittedDate())
                        {
                            Console.WriteLine("                    SubmittedDate");
                            Console.WriteLine("                        {0}", feedSubmissionInfo.SubmittedDate);
                        }
                        if (feedSubmissionInfo.IsSetFeedProcessingStatus())
                        {
                            Console.WriteLine("                    FeedProcessingStatus");
                            Console.WriteLine("                        {0}", feedSubmissionInfo.FeedProcessingStatus);
                        }
                        if (feedSubmissionInfo.IsSetStartedProcessingDate())
                        {
                            Console.WriteLine("                    StartedProcessingDate");
                            Console.WriteLine("                        {0}", feedSubmissionInfo.StartedProcessingDate);
                        }
                        if (feedSubmissionInfo.IsSetCompletedProcessingDate())
                        {
                            Console.WriteLine("                    CompletedProcessingDate");
                            Console.WriteLine("                        {0}", feedSubmissionInfo.CompletedProcessingDate);
                        }
                    }
                }
                if (response.IsSetResponseMetadata())
                {
                    Console.WriteLine("            ResponseMetadata");
                    ResponseMetadata responseMetadata = response.ResponseMetadata;
                    if (responseMetadata.IsSetRequestId())
                    {
                        Console.WriteLine("                RequestId");
                        Console.WriteLine("                    {0}", responseMetadata.RequestId);
                    }
                }

                Console.WriteLine("            ResponseHeaderMetadata");
                Console.WriteLine("                RequestId");
                Console.WriteLine("                    " + response.ResponseHeaderMetadata.RequestId);
                Console.WriteLine("                ResponseContext");
                Console.WriteLine("                    " + response.ResponseHeaderMetadata.ResponseContext);
                Console.WriteLine("                Timestamp");
                Console.WriteLine("                    " + response.ResponseHeaderMetadata.Timestamp);
            }
            catch (MarketplaceWebServiceException ex)
            {
                ExceptionUtility exceptionUtility = new ExceptionUtility();
                exceptionUtility.CatchMethod(ex, "SubmitAmazonTrackingFeed Error:", ex.Message.ToString(), senderEmail, messageFromPassword, messageToEmail, smtpClient, smtpPortNum);

                Console.WriteLine("Caught Exception: " + ex.Message);
                Console.WriteLine("Response Status Code: " + ex.StatusCode);
                Console.WriteLine("Error Code: " + ex.ErrorCode);
                Console.WriteLine("Error Type: " + ex.ErrorType);
                Console.WriteLine("Request ID: " + ex.RequestId);
                Console.WriteLine("XML: " + ex.XML);
                Console.WriteLine("ResponseHeaderMetadata: " + ex.ResponseHeaderMetadata);
            }

            return(feedSubmissionId);
        }
Example #8
0
        public List <XElement> SubmitFeed(string accountName, XElement feed)
        {
            List <XElement>   errors  = new List <XElement>();
            SubmitFeedRequest request = new SubmitFeedRequest();

            request.FeedType             = "_POST_INVENTORY_AVAILABILITY_DATA_";
            request.MWSAuthToken         = mwsAuthTokenDictionary[accountName];
            request.Merchant             = sellerIdDictionary[accountName];
            request.MarketplaceIdList    = new IdList();
            request.MarketplaceIdList.Id = new List <string>();
            request.MarketplaceIdList.Id.Add(marketplaceId);
            MemoryStream memoryStream = new MemoryStream();

            feed.Save(memoryStream);
            request.FeedContent          = memoryStream;
            request.FeedContent.Position = 0;
            request.ContentMD5           = MarketplaceWebServiceClient.CalculateContentMD5(request.FeedContent);
            request.FeedContent.Position = 0;

            int retryCount = 0;
            SubmitFeedResponse response = null;

            while (retryCount <= 4 && response == null)
            {
                Thread.Sleep(TimeSpan.FromMinutes(retryCount * 2));
                try
                {
                    response = mwsClient.SubmitFeed(request);
                }
                catch (Exception e)
                {
                    if (retryCount >= 4)
                    {
                        throw e;
                    }
                    retryCount++;
                }
            }

            memoryStream.Close();
            string feedSubmissionId = response.SubmitFeedResult.FeedSubmissionInfo.FeedSubmissionId;

            int  count = 0;
            bool done  = false;

            while (count < 100 && !done)
            {
                Thread.Sleep(60000);
                GetFeedSubmissionListRequest feedSubmissionListRequest = new GetFeedSubmissionListRequest();
                feedSubmissionListRequest.MWSAuthToken         = mwsAuthTokenDictionary[accountName];
                feedSubmissionListRequest.Merchant             = sellerIdDictionary[accountName];
                feedSubmissionListRequest.FeedSubmissionIdList = new IdList();
                feedSubmissionListRequest.FeedSubmissionIdList.Id.Add(feedSubmissionId);
                GetFeedSubmissionListResponse feedSubmissionResponse = mwsClient.GetFeedSubmissionList(feedSubmissionListRequest);
                foreach (FeedSubmissionInfo info in feedSubmissionResponse.GetFeedSubmissionListResult.FeedSubmissionInfo)
                {
                    if (info.FeedSubmissionId == feedSubmissionId)
                    {
                        if (info.FeedProcessingStatus == "_DONE_")
                        {
                            done = true;
                            GetFeedSubmissionResultRequest feedSubmissionResultRequest = new GetFeedSubmissionResultRequest();
                            feedSubmissionResultRequest.MWSAuthToken     = mwsAuthTokenDictionary[accountName];
                            feedSubmissionResultRequest.Merchant         = sellerIdDictionary[accountName];
                            feedSubmissionResultRequest.FeedSubmissionId = feedSubmissionId;

                            MemoryStream stream = new MemoryStream();
                            feedSubmissionResultRequest.FeedSubmissionResult = stream;

                            retryCount = 0;
                            GetFeedSubmissionResultResponse feedSubmissionResultResponse = null;
                            while (retryCount <= m_maxRetry && feedSubmissionResultResponse == null)
                            {
                                Thread.Sleep(TimeSpan.FromMinutes(retryCount * 2));
                                try
                                {
                                    feedSubmissionResultResponse = mwsClient.GetFeedSubmissionResult(feedSubmissionResultRequest);
                                }
                                catch (MarketplaceWebServiceException e)
                                {
                                    if (e.ErrorCode == "RequestThrottled")
                                    {
                                        retryCount++;
                                    }
                                }
                            }


                            XElement responseElement        = XElement.Load(stream);
                            IEnumerable <XElement> messages = responseElement.Descendants("Message");
                            foreach (XElement message in messages)
                            {
                                XElement processingReportElement = message.Element("ProcessingReport");
                                int      nError = (int)processingReportElement.Element("ProcessingSummary").Element("MessagesWithError");
                                if (nError > 0)
                                {
                                    int messageId = (int)message.Element("MessageID");
                                }
                            }
                        }
                    }
                }
                count++;
            }

            return(errors);
        }
        private List <string> SendAmazonFeeds(List <List <object> > amazonUpdateList, AmazonEnvelopeMessageType messageType, AmazonFeedType feedType)
        {
            {
                var masterCounter = 1;
                var returnResult  = new List <string>();
                foreach (var amazonUpdateGroup in amazonUpdateList)
                {
                    var amazonEnvelope = new AmazonEnvelope
                    {
                        Header = new Header {
                            DocumentVersion = "1.01", MerchantIdentifier = _merchantId,
                        },
                        MessageType              = messageType,
                        PurgeAndReplace          = false,
                        PurgeAndReplaceSpecified = true
                    };

                    var updates = new List <AmazonEnvelopeMessage>();
                    var counter = 1;
                    foreach (var amazonUpdate in amazonUpdateGroup)
                    {
                        var curUpdate = new AmazonEnvelopeMessage
                        {
                            MessageID     = counter.ToString(),
                            OperationType = AmazonEnvelopeMessageOperationType.Update,
                            //OperationTypeSpecified = true,
                            Item = amazonUpdate
                        };
                        updates.Add(curUpdate);
                        counter++;
                    }
                    amazonEnvelope.Message = updates.ToArray();
                    var xmlString        = MarketplaceHelper.ParseObjectToXML(amazonEnvelope);
                    var path             = "D:\\logs\\";
                    var fileName         = string.Format("Amazon{0}Feed_{1}{3}.{2}", messageType, masterCounter, "xml", DateTime.Now.Second);
                    var documentFileName = Path.Combine(path, fileName);
                    File.WriteAllText(documentFileName, xmlString);
                    if (!File.Exists(documentFileName))
                    {
                        throw new ArgumentException("SendFeed document not generated properly");
                    }
                    var feedRequest = new SubmitFeedRequest
                    {
                        Merchant          = _merchantId,
                        MarketplaceIdList =
                            new IdList {
                            Id = new List <string>(new[] { _marketplaceId })
                        },
                        FeedType    = feedType.ToString(),
                        ContentType = new ContentType(MediaType.OctetStream),
                        FeedContent = File.Open(documentFileName, FileMode.Open, FileAccess.Read)
                    };
                    feedRequest.ContentMD5 = MarketplaceWebServiceClient.CalculateContentMD5(feedRequest.FeedContent);
                    var feedConfig = new MarketplaceWebServiceConfig {
                        ServiceURL = "https://mws.amazonservices.com"
                    };
                    var feedService   = new MarketplaceWebServiceClient(_awsAccessKey, _secretKey, "Demac", "1.01", feedConfig);
                    var uploadSuccess = false;
                    var retryCount    = 0;
                    while (!uploadSuccess)
                    {
                        try
                        {
                            var feedResponse = feedService.SubmitFeed(feedRequest);
                            var submissionId = feedResponse.SubmitFeedResult.FeedSubmissionInfo.FeedSubmissionId;
                            returnResult.Add(submissionId);
                            uploadSuccess = true;
                            masterCounter++;
                            //Thread.Sleep(120000);
                        }
                        catch (Exception ex)
                        {
                            retryCount++;
                            if (retryCount == 3)
                            {
                                break;
                            }
                            //Thread.Sleep(18000);
                            if (ex.ToString().ToLowerInvariant().Contains("request is throttled"))
                            {
                                continue;
                            }
                            returnResult.Add(string.Format("ERROR: {0}", ex));
                        }
                    }
                }
                return(returnResult);
            }
        }