Example #1
0
        private FeedSubmissionInfo[] _GetFeedSubmissionList(string[] FeedSubmissionIdList, EFeedType[] FeedTypeList, EFeedProcessingStatus[] FeedProcessingStatusList, DateTime SubmittedFromDate, DateTime SubmittedToDate)
        {
            string                       NextToken   = string.Empty;
            AmazonCredential             Credentials = this.GetCredential();
            MarketplaceWebServiceClient  Client      = this.GetClient(Credentials);
            GetFeedSubmissionListRequest Request     = new GetFeedSubmissionListRequest()
            {
                Merchant = Credentials.MerchantID,
                MaxCount = 100
            };

            if (FeedSubmissionIdList != null)
            {
                Request.FeedSubmissionIdList = new IdList()
                {
                    Id = FeedSubmissionIdList.ToList()
                }
            }
            ;
            else if (FeedTypeList != null)
            {
                Request.FeedTypeList = new TypeList()
                {
                    Type = FeedTypeList.Select(Item => EnumStringHandler.GetEnumString <EFeedType>(Item)).ToList()
                }
            }
            ;
            else if (FeedProcessingStatusList != null)
            {
                Request.FeedProcessingStatusList = new StatusList()
                {
                    Status = FeedProcessingStatusList.Select(Item => EnumStringHandler.GetEnumString <EFeedProcessingStatus>(Item)).ToList()
                }
            }
            ;
            else if (SubmittedFromDate != default(DateTime) && SubmittedToDate != default(DateTime))
            {
                Request.SubmittedFromDate = SubmittedFromDate;
                Request.SubmittedToDate   = SubmittedToDate;
            }

            List <FeedSubmissionInfo> Info = new List <FeedSubmissionInfo>();
            Task GetFeedSubmissionListTask = new Task(() =>
            {
                while (true)
                {
                    switch (NextToken == string.Empty)
                    {
                    case true:
                        this.Throttle(ERequestType.GetFeedSubmissionList);
                        GetFeedSubmissionListResponse Response = Client.GetFeedSubmissionList(Request);
                        if (Response.IsSetGetFeedSubmissionListResult())
                        {
                            GetFeedSubmissionListResult Result = Response.GetFeedSubmissionListResult;
                            if (Result.IsSetFeedSubmissionInfo())
                            {
                                foreach (var FeedInfo in Result.FeedSubmissionInfo)
                                {
                                    Info.Add(FeedInfo);
                                }
                            }

                            if (Result.HasNext)
                            {
                                NextToken = Result.NextToken;
                            }
                            else
                            {
                                goto EndOfLoop;
                            }
                        }
                        break;

                    case false:
                        this.Throttle(ERequestType.GetFeedSubmissionListByNextToken);
                        GetFeedSubmissionListByNextTokenRequest RequestNextToken = new GetFeedSubmissionListByNextTokenRequest()
                        {
                            Merchant  = Credentials.MerchantID,
                            NextToken = NextToken,
                        };
                        GetFeedSubmissionListByNextTokenResponse ResponseNextToken = Client.GetFeedSubmissionListByNextToken(RequestNextToken);
                        if (ResponseNextToken.IsSetGetFeedSubmissionListByNextTokenResult())
                        {
                            GetFeedSubmissionListByNextTokenResult ResultNextToken = ResponseNextToken.GetFeedSubmissionListByNextTokenResult;
                            if (ResultNextToken.IsSetFeedSubmissionInfo())
                            {
                                foreach (var FeedInfo in ResultNextToken.FeedSubmissionInfo)
                                {
                                    Info.Add(FeedInfo);
                                }
                            }

                            if (ResultNextToken.HasNext)
                            {
                                NextToken = ResultNextToken.NextToken;
                            }
                            else
                            {
                                goto EndOfLoop;
                            }
                        }
                        break;
                    }
                }
                EndOfLoop:
                Console.Write("");
            });

            GetFeedSubmissionListTask.Start();
            GetFeedSubmissionListTask.Wait((int)Math.Ceiling(TimeSpan.FromMinutes(Definitions.Timeout_Minutes).Add(TimeSpan.FromHours(Definitions.Timeout_Hours)).TotalMilliseconds));
            return(Info.ToArray());
        }