private AmazonOrdersList GetUserOrders(AmazonOrdersRequestInfo amazonRequestInfo, ActionAccessType access) { const string getFlatFileOrdersDataRequestStr = "_GET_FLAT_FILE_ORDERS_DATA_"; var reportRequestList = new RequestsListInfo(amazonRequestInfo, "GetUserOrders", access /*timeout: 3 hours*/, amazonRequestInfo.ErrorRetryingInfo); reportRequestList.AddRequest(getFlatFileOrdersDataRequestStr); RequestAndWait(reportRequestList); return(ParseOrdersResult(getFlatFileOrdersDataRequestStr, reportRequestList)); }
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 AmazonOrdersList ParseOrdersResult(string getFlatFileOrdersDataRequestStr, RequestsListInfo reportRequestList) { var requestInfo = reportRequestList.GetRequestByName(getFlatFileOrdersDataRequestStr); AmazonOrdersList data = new AmazonOrdersList(reportRequestList.StartDate.Value); if (requestInfo != null && requestInfo.IsDone) { var reportRequestInfo = requestInfo.ReportData; if (reportRequestInfo != null) { data = new AmazonOrdersList(reportRequestInfo.SubmittedDate); using (var stream = new MemoryStream()) { GetReportData(requestInfo, stream); ParseOrdersStream(data, stream); } } } return(data); }
private void RequestAndWait(RequestsListInfo reportRequestList) { RequestReports(reportRequestList); WaitRequestsDone(reportRequestList); }
public RequestInfo(RequestsListInfo owner, string requestName) { Owner = owner; Name = requestName; ResetData(); }