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); } }
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); } } }
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); } }
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"); } }
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); } } }
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; } } }
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); }