/// <summary> /// Create Amazon envelope for the single eisProduct feed /// </summary> /// <param name="productPostFeed">The EIS eisProduct object</param> /// <param name="operationType">The type of Amazon operation</param> /// <returns></returns> public static AmazonEnvelope CreateSingleProductFeedEnvelope(MarketplaceProductFeedDto productPostFeed, AmazonEnvelopeMessageOperationType operationType) { // create Amazon envelope object var amazonEnvelope = new AmazonEnvelope { Header = new Header { DocumentVersion = "1.01", MerchantIdentifier = MerchantId }, MessageType = AmazonEnvelopeMessageType.Product, PurgeAndReplace = false, PurgeAndReplaceSpecified = true }; // create the eisProduct envelope message var envelopeMessages = new List <AmazonEnvelopeMessage>(); var message = new AmazonEnvelopeMessage { MessageID = "1", OperationType = operationType, OperationTypeSpecified = true, Item = createProductModelForAmazon(productPostFeed) }; // convert to array and set its message envelopeMessages.Add(message); amazonEnvelope.Message = envelopeMessages.ToArray(); return(amazonEnvelope); }
public FileStream GetFeed(IEnumerable<object> feeds, AmazonEnvelopeMessageType amazonEnvelopeMessageType, AmazonEnvelopeMessageOperationType? amazonEnvelopeMessageOperationType) { if (feeds != null && feeds.Any()) { var messages = new AmazonEnvelopeMessageCollection(); var msgCounter = 1; foreach (var feed in feeds) { var message = new AmazonEnvelopeMessage { MessageID = msgCounter.ToString(), Item = feed }; if (amazonEnvelopeMessageOperationType != null) message.OperationType = amazonEnvelopeMessageOperationType.Value; messages.Add(message); msgCounter++; } var amazonEnvelope = new AmazonEnvelope { Header = new Header { DocumentVersion = "1.0", MerchantIdentifier = _amazonSellerSettings.SellerId }, MessageType = amazonEnvelopeMessageType, Message = messages }; return AmazonAppHelper.GetStream(amazonEnvelope, amazonEnvelopeMessageType); } return null; }
public FileStream GetSingleFeed(object feed, AmazonEnvelopeMessageType amazonEnvelopeMessageType, AmazonEnvelopeMessageOperationType? amazonEnvelopeMessageOperationType) { if (feed != null) { var message = new AmazonEnvelopeMessage { MessageID = "1", Item = feed }; if (amazonEnvelopeMessageOperationType != null) message.OperationType = amazonEnvelopeMessageOperationType.Value; var amazonEnvelope = new AmazonEnvelope { Header = new Header { DocumentVersion = "1.0", MerchantIdentifier = _amazonSellerSettings.SellerId }, MessageType = amazonEnvelopeMessageType, Message = new AmazonEnvelopeMessageCollection(){message} }; return AmazonAppHelper.GetStream(amazonEnvelope, amazonEnvelopeMessageType); } return null; }
/// <summary> /// Create Amazon Envelope for the Amazon eisProduct specified /// </summary> /// <param name="products">The Amazon products to be created into Amazon envelope</param> /// <returns></returns> public static AmazonEnvelope CreateProductsFeedEnvelope(List <MarketplaceProductFeedDto> productPostFeeds, AmazonEnvelopeMessageOperationType operationType) { // create product post feed for Amazon var products = new List <AmazonWebServiceModels.Product>(); productPostFeeds.ForEach(feedItem => { products.Add(createProductModelForAmazon(feedItem)); }); // create Amazon envelope object var amazonEnvelope = new AmazonEnvelope { Header = new Header { DocumentVersion = "1.01", MerchantIdentifier = MerchantId }, MessageType = AmazonEnvelopeMessageType.Product, PurgeAndReplace = false, PurgeAndReplaceSpecified = true }; // iterate to all products to update and convert it to envelope message var envelopeMessages = new List <AmazonEnvelopeMessage>(); for (var i = 0; i < products.Count; i++) { var message = new AmazonEnvelopeMessage { MessageID = string.Format("{0}", i + 1), OperationType = operationType, OperationTypeSpecified = true, Item = products[i], }; envelopeMessages.Add(message); } // convert to array and set its message amazonEnvelope.Message = envelopeMessages.ToArray(); return(amazonEnvelope); }
public async Task <MwsResponse <SubmitFeedResponse> > SubmitFeed <T>(List <T> messageItems, AmazonEnvelopeMessageType messageType, DateTime effectiveDate, string feedType, bool purgeAndReplace = false, AmazonEnvelopeMessageOperationType operationType = AmazonEnvelopeMessageOperationType.Update) where T : AmazonMessageChoice { if (typeof(T).Name != messageType.ToString()) { return(new MwsResponse <SubmitFeedResponse> { Error = new ErrorResponse(), ExceptionMessage = "Feed items do not match given messageChoice" }); } var parameters = new SortedDictionary <string, string>(new SortDecendingBytes()); var envelope = InstantiateEnvelope <T>(this.SellerId, this.MarketPlaceId, purgeAndReplace, messageItems, messageType, effectiveDate, operationType); parameters["PurgeAndReplace"] = purgeAndReplace.ToString().ToLower(); parameters["FeedType"] = feedType; try { var result = await SendMws <AmazonEnvelope>(envelope, parameters, "SubmitFeed"); var resultText = await result.Content.ReadAsStringAsync(); var submitFeedResult = MwsUtilities.Deserialize <SubmitFeedResponse>(resultText); if (submitFeedResult != null) { return(new MwsResponse <SubmitFeedResponse> { Result = submitFeedResult }); } var submitFeedError = MwsUtilities.Deserialize <ErrorResponse>(resultText); if (submitFeedError != null) { return(new MwsResponse <SubmitFeedResponse> { Error = submitFeedError }); } return(new MwsResponse <SubmitFeedResponse> { Error = new ErrorResponse(), ExceptionMessage = "Unknown Error" }); } catch (Exception ex) { return(new MwsResponse <SubmitFeedResponse> { Error = new ErrorResponse(), ExceptionMessage = ex.ToString() }); } }
private static AmazonEnvelope InstantiateEnvelope <T>(string merchantId, string marketplaceName, bool purgeAndReplace, List <T> messageItems, AmazonEnvelopeMessageType messageType, DateTime effectiveDate, AmazonEnvelopeMessageOperationType operationType = AmazonEnvelopeMessageOperationType.Update) where T : AmazonMessageChoice { var header = new Amazon.Header() { DocumentVersion = "1.0", MerchantIdentifier = merchantId }; var messageList = new List <AmazonEnvelopeMessage>(); var currentId = 1; foreach (var messageItem in messageItems) { var message = new AmazonEnvelopeMessage() { Item = messageItem, MessageID = currentId++.ToString(), OperationType = operationType }; messageList.Add(message); } var envelope = new AmazonEnvelope() { EffectiveDate = effectiveDate, Header = header, MarketplaceName = marketplaceName, MessageType = messageType, PurgeAndReplace = purgeAndReplace, Message = messageList }; return(envelope); }