Exemple #1
0
        /// <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;
        }
Exemple #4
0
        /// <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);
        }
Exemple #5
0
        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()
                });
            }
        }
Exemple #6
0
        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);
        }