Пример #1
0
        private void GetOrderItemsByNextToken(AmazonOrderItemDetailsList list, AmazonOrdersItemsRequestInfo requestInfo, string nextToken, ActionAccessType access, RequestsCounterData requestCounter)
        {
            var sellerId = requestInfo.MerchantId;
            var req      = new ListOrderItemsByNextTokenRequest {
                NextToken    = nextToken,
                SellerId     = sellerId,
                MWSAuthToken = requestInfo.MWSAuthToken
            };

            var response = AmazonWaitBeforeRetryHelper.DoServiceAction(
                requestInfo.ErrorRetryingInfo,
                ListOrderItemsTrapForThrottling,
                "ListOrderItemsByNextToken",
                access,
                requestCounter,
                () => _Service.ListOrderItemsByNextToken(req));

            if (response == null)
            {
                return;
            }

            var result = response.ListOrderItemsByNextTokenResult;

            if (result.IsSetOrderItems())
            {
                ParseOrderItems(list, result.OrderItems);
            }

            if (result.IsSetNextToken())
            {
                GetOrderItemsByNextToken(list, requestInfo, result.NextToken, access, requestCounter);
            }
        }
Пример #2
0
        private void GetOrdersByNextToken(AmazonOrdersRequestInfo requestInfo, string nextToken, ActionAccessType access, RequestsCounterData responseCounter, Func <List <AmazonOrderItem>, bool> func)
        {
            var sellerId = requestInfo.MerchantId;

            var req = new ListOrdersByNextTokenRequest {
                NextToken    = nextToken,
                SellerId     = sellerId,
                MWSAuthToken = requestInfo.MWSAuthToken
            };
            var response = AmazonWaitBeforeRetryHelper.DoServiceAction(
                requestInfo.ErrorRetryingInfo,
                ListOrdersTrapForThrottling,
                "ListOrdersByNextToken",
                access,
                responseCounter,
                () => _Service.ListOrdersByNextToken(req));

            if (response != null && response.IsSetListOrdersByNextTokenResult())
            {
                var result = response.ListOrdersByNextTokenResult;
                if (result.IsSetOrders())
                {
                    var ordersList = ParseOrdersInfo(result.Orders, sellerId, access, requestInfo.CustomerId);
                    func(ordersList);
                }

                if (result.IsSetNextToken())
                {
                    GetOrdersByNextToken(requestInfo, result.NextToken, access, responseCounter, func);
                }
            }
        }
Пример #3
0
        private AmazonOrderItemDetailsList GetListItemsOrdered(AmazonOrdersItemsRequestInfo requestInfo, ActionAccessType access, RequestsCounterData requestCounter)
        {
            var orderId  = requestInfo.OrderId;
            var sellerId = requestInfo.MerchantId;

            try {
                var req = new ListOrderItemsRequest {
                    AmazonOrderId = orderId,
                    SellerId      = sellerId,
                    MWSAuthToken  = requestInfo.MWSAuthToken
                };

                var response = AmazonWaitBeforeRetryHelper.DoServiceAction(
                    requestInfo.ErrorRetryingInfo,
                    ListOrderItemsTrapForThrottling,
                    "ListOrderItems",
                    access,
                    requestCounter,
                    () => _Service.ListOrderItems(req));

                var list = new AmazonOrderItemDetailsList(DateTime.UtcNow)
                {
                    RequestsCounter = requestCounter
                };

                if (response == null)
                {
                    return(list);
                }
                var result = response.ListOrderItemsResult;

                if (result.IsSetOrderItems())
                {
                    ParseOrderItems(list, result.OrderItems);
                }

                if (result.IsSetNextToken())
                {
                    GetOrderItemsByNextToken(list, requestInfo, result.NextToken, access, requestCounter);
                }

                return(list);
            } catch (MarketplaceWebServiceOrdersException) {
                return(null);
            }
        }
Пример #4
0
        private void GetReportData(RequestInfo requestInfo, Stream stream)
        {
            var requestReport    = new GetReportRequest();
            var requestsListInfo = requestInfo.Owner;
            var merchant         = requestsListInfo.UserId;
            var access           = requestsListInfo.Access;
            var requestName      = requestInfo.Name;

            var requestReportList = new GetReportListRequest {
                Merchant = merchant
            };

            ReportInfo reportInfo = null;

            var respGetReportList = AmazonWaitBeforeRetryHelper.DoServiceAction(
                requestsListInfo.ErrorRetryingInfo,
                ReportGetReportListTrapForThrottling,
                requestName,
                access,
                requestsListInfo.RequestsCounter,
                () => _Service.GetReportList(requestReportList),
                "GetReportList");

            if (respGetReportList != null && respGetReportList.IsSetGetReportListResult())
            {
                reportInfo = respGetReportList.GetReportListResult.ReportInfo.FirstOrDefault(r => r.ReportRequestId.Equals(requestInfo.Id));
            }

            if (reportInfo != null)
            {
                requestReport.Merchant = merchant;
                requestReport.ReportId = reportInfo.ReportId;

                requestReport.Report = stream;

                AmazonWaitBeforeRetryHelper.DoServiceAction(
                    requestsListInfo.ErrorRetryingInfo,
                    ReportGetReportTrapForThrottling,
                    requestName,
                    access,
                    requestsListInfo.RequestsCounter,
                    () => _Service.GetReport(requestReport),
                    "GetReport");
            }
        }
Пример #5
0
        private void RequestReports(RequestsListInfo reportRequestList)
        {
            var marketplaceIdList = new IdList {
                Id = reportRequestList.MarketPlaceId
            };
            var access = reportRequestList.Access;

            foreach (var requestInfo in reportRequestList)
            {
                var reportType = requestInfo.Name;

                var requestReportRequest = new RequestReportRequest {
                    MarketplaceIdList = marketplaceIdList,
                    Merchant          = reportRequestList.UserId,
                    ReportOptions     = "ShowSalesChannel=true",
                    ReportType        = reportType
                };

                if (reportRequestList.StartDate.HasValue)
                {
                    requestReportRequest.StartDate = reportRequestList.StartDate.Value.ToUniversalTime();
                }

                if (reportRequestList.EndDate.HasValue)
                {
                    requestReportRequest.EndDate = reportRequestList.EndDate.Value.ToUniversalTime();
                }

                RequestInfo info = requestInfo;

                var resp = AmazonWaitBeforeRetryHelper.DoServiceAction(
                    reportRequestList.ErrorRetryingInfo,
                    RequestGetReportTrapForThrottling,
                    reportType,
                    access,
                    reportRequestList.RequestsCounter,
                    () => _Service.RequestReport(requestReportRequest),
                    "RequestReport");

                if (resp != null && resp.IsSetRequestReportResult())
                {
                    info.SetId(resp.RequestReportResult.ReportRequestInfo.ReportRequestId);
                }
            }
        }
Пример #6
0
        private void WaitRequestsDone(RequestsListInfo requestsListInfo)
        {
            var actionName       = requestsListInfo.ActionName;
            var timeOutInMinutes = requestsListInfo.TimeOutInMinutes;
            var access           = requestsListInfo.Access;

            var amazonIsdList = requestsListInfo.AmazonIds;

            var getReportRequestListRequest = new GetReportRequestListRequest {
                Merchant            = requestsListInfo.UserId,
                ReportRequestIdList = amazonIsdList
            };

            var endDate = DateTime.Now.AddMinutes(timeOutInMinutes);

            while (DateTime.Now <= endDate)
            {
                var reportRequestListResponse = AmazonWaitBeforeRetryHelper.DoServiceAction(
                    requestsListInfo.ErrorRetryingInfo,
                    ReportGetRequestListTrapForThrottling,
                    actionName,
                    access,
                    requestsListInfo.RequestsCounter,
                    () => _Service.GetReportRequestList(getReportRequestListRequest),
                    "GetReportRequestList");

                if (reportRequestListResponse != null && reportRequestListResponse.IsSetGetReportRequestListResult())
                {
                    var getReportRequestListResult = reportRequestListResponse.GetReportRequestListResult;

                    requestsListInfo.UpdateAmazonReportRequestInfo(getReportRequestListResult == null ? null : getReportRequestListResult.ReportRequestInfo);
                }

                if (!requestsListInfo.HasAmazonResult)
                {
                    continue;
                }

                if (requestsListInfo.IsDoneAll)
                {
                    break;
                }
            }
        }
Пример #7
0
        private RequestsCounterData GetListOrders(AmazonOrdersRequestInfo requestInfo, ActionAccessType access, Func <List <AmazonOrderItem>, bool> func)
        {
            var request = new ListOrdersRequest {
                MarketplaceId = requestInfo.MarketplaceId,
                SellerId      = requestInfo.MerchantId,
                MWSAuthToken  = requestInfo.MWSAuthToken
            };

            if (requestInfo.StartDate.HasValue)
            {
                request.CreatedAfter = requestInfo.StartDate.Value.ToUniversalTime();
            }
            var responseCounter = new RequestsCounterData();
            var response        = AmazonWaitBeforeRetryHelper.DoServiceAction(
                requestInfo.ErrorRetryingInfo,
                ListOrdersTrapForThrottling,
                "ListOrders",
                access,
                responseCounter,
                () => _Service.ListOrders(request));

            if (response == null || response.ListOrdersResult == null || !response.IsSetListOrdersResult())
            {
                return(null);
            }

            var result = response.ListOrdersResult;

            if (result.IsSetOrders())
            {
                var ordersList = ParseOrdersInfo(result.Orders, request.SellerId, access, requestInfo.CustomerId);
                func(ordersList);
            }

            if (result.IsSetNextToken())
            {
                GetOrdersByNextToken(requestInfo, result.NextToken, access, responseCounter, func);
            }

            return(responseCounter);
        }