public ReportRequestInfo PollReportStatus(string reportRequestId, out ReportRequestInfoStatus reportRequestInfoStatus) { if (string.IsNullOrEmpty(reportRequestId)) { throw new ArgumentNullException("reportRequestId is empty"); } ReportRequestInfo reportRequestInfo = null; reportRequestInfoStatus = ReportRequestInfoStatus.Unknown; int sleepTime = 5000; for (int i = 0; i < 6; i++) { nLogger.Info("GetReportRequestInfo polling for reportRequestId: " + reportRequestId); reportRequestInfo = GetReportRequestInfo(reportRequestId); reportRequestInfoStatus = GetReportRequestInfoStatus(reportRequestInfo); if (reportRequestInfoStatus == ReportRequestInfoStatus.ReportPending || reportRequestInfoStatus == ReportRequestInfoStatus.Unknown) { Thread.Sleep(sleepTime); sleepTime = sleepTime + sleepTime; } else { break; } } return(reportRequestInfo); }
public ReportRequestInfoStatus GetReportRequestInfoStatus(ReportRequestInfo reportRequestInfo) { /* * _SUBMITTED_ * _IN_PROGRESS_ * _CANCELLED_ * _DONE_ * _DONE_NO_DATA_ */ if (reportRequestInfo == null) { return(ReportRequestInfoStatus.ReportPending); } if (reportRequestInfo.ReportProcessingStatus == "_SUBMITTED_") { return(ReportRequestInfoStatus.ReportPending); } if (reportRequestInfo.ReportProcessingStatus == "_IN_PROGRESS_") { return(ReportRequestInfoStatus.ReportPending); } if (reportRequestInfo.ReportProcessingStatus == "_CANCELLED_") { return(ReportRequestInfoStatus.ReportFailed); } if (reportRequestInfo.ReportProcessingStatus == "_DONE_") { return(ReportRequestInfoStatus.ReportReady); } if (reportRequestInfo.ReportProcessingStatus == "_DONE_NO_DATA_") { return(ReportRequestInfoStatus.ReportFailed); } return(ReportRequestInfoStatus.ReportFailed); }
public void GetReportRequestInfoStatus_ReportFailed() { ReportRequestInfo reportRequestInfo = new ReportRequestInfo(); reportRequestInfo.ReportRequestId = ""; reportRequestInfo.ReportProcessingStatus = "_CANCELLED_"; ReportRequestInfoStatus status = reportHandler.GetReportRequestInfoStatus(reportRequestInfo); Console.Write(status.ToString()); Assert.AreEqual(ReportRequestInfoStatus.ReportFailed, status); }
public virtual InvokeReporstServicesCallResponse InvokeReportsServiceCalls(PXGraph graph, SOAmazonSetup objSOAmazonSetup, DateTime?fromDate, DateTime?toDate) { InvokeReporstServicesCallResponse objShipInfo = new InvokeReporstServicesCallResponse(); MarketplaceWebService.MarketplaceWebService serviceConfig = this.Configurations(objSOAmazonSetup.IntegrationType.Trim(), objSOAmazonSetup.AccessKey, objSOAmazonSetup.SecretKey); if (serviceConfig == null) { return(objShipInfo); } ReportRequestInfo reportInfo = new ReportRequestInfo(); List <ShipmentInformarion> liShipmentInfo = new List <ShipmentInformarion>(); reportParams = new ReportParameters(); reportParams.objSOAmazonSetup = objSOAmazonSetup; reportParams.reportRequestId = string.Empty; reportParams.reportInfo = reportInfo; reportParams.liShipmentInfo = liShipmentInfo; reportParams.serviceConfig = serviceConfig; reportInfo = new AMShipmentTrackingNumberServiceCall(reportParams.serviceConfig).InvokeGetReportRequestList(graph, reportParams); reportParams.fromDate = fromDate; reportParams.toDate = toDate; try { if (reportInfo != null && reportInfo.GeneratedReportId != null) { if (Convert.ToInt32((TimeZoneInfo.ConvertTimeToUtc(DateTime.Now) - TimeZoneInfo.ConvertTimeToUtc(reportInfo.CompletedDate)).TotalMinutes) <= SOConstants.limitForReports) { throw new PXException(SOMessages.errorReportInfo); } else { liShipmentInfo = RequestAndGetReportData(graph, reportParams); } objShipInfo.objShipmentResponse = liShipmentInfo; } else { liShipmentInfo = RequestAndGetReportData(graph, reportParams); } } catch (Exception ex) { throw new PXException(!string.IsNullOrEmpty(ex.Message) ? ex.Message : ex.InnerException != null && ex.InnerException.InnerException != null ? ex.InnerException.InnerException.Message : SOConstants.exceptionIsEmpty); } return(objShipInfo); }
private string getPriorReportId(string ReportType, IEnumerable <XElement> ReportRequestInfos) { foreach (var ReportRequestInfo in ReportRequestInfos) { string rType = (string)ReportRequestInfo.Element("ReportType"); if (!String.IsNullOrEmpty(rType) && rType == ReportType) { var ReportProcessingStatus = (string)ReportRequestInfo.Element("ReportProcessingStatus"); //Log.Error(_acct.AmazonAccountId,$"Report request {ReportRequestId} status = {ReportProcessingStatus}"); if (ReportProcessingStatus.StartsWith("_DONE_")) { return((string)ReportRequestInfo.Element("GeneratedReportId")); } } } return(""); }
public GetReportResult GetReport(string reportType, DateTime startDate, DateTime endDate, string fileLocation) { GetReportResult report = new GetReportResult(); ReportRequestInfoStatus reportRequestInfoStatus; RequestReportResult requestReportResult = reportHandler.RequestReport(reportType, startDate, endDate); ReportRequestInfo reportRequestInfo = reportHandler.PollReportStatus(requestReportResult.ReportRequestInfo.ReportRequestId, out reportRequestInfoStatus); string writePath = reportHandler.CreateFileLocation(fileLocation, serviceContext.SellerId, reportType, startDate, endDate); if (reportRequestInfoStatus.Equals(ReportRequestInfoStatus.ReportReady)) { nLogger.Info("ReportReady, getting report"); report = reportHandler.GetReport(reportRequestInfo.GeneratedReportId); if (!report.IsEmptyContent()) { reportHandler.WriteToFile(report.Content, writePath); } } if (report.IsEmptyContent()) { nLogger.Info("getting report from disc"); if (File.Exists(writePath)) { report.Content = File.ReadAllText(writePath); } } if (report.IsEmptyContent()) { nLogger.Info("GetPriorReport"); report = GetPriorReport(reportType, startDate, endDate); if (!report.IsEmptyContent()) { reportHandler.WriteToFile(report.Content, writePath); } } return(report); }
/// <summary> /// returns the number of feeds matching all of the specified criteria /// /// </summary> /// <param name="service">Instance of MarketplaceWebService service</param> /// <param name="request">GetFeedSubmissionCountRequest request</param> public static void InvokeRequestReport(MarketplaceWebService service, RequestReportRequest request) { try { RequestReportResponse response = service.RequestReport(request); Console.WriteLine("Service Response"); Console.WriteLine("============================================================================="); Console.WriteLine(); Console.WriteLine(" RequestReportResponse"); if (response.IsSetRequestReportResult()) { Console.WriteLine(" RequestReportResult"); RequestReportResult requestReportResult = response.RequestReportResult; ReportRequestInfo reportRequestInfo = requestReportResult.ReportRequestInfo; Console.WriteLine(" ReportRequestInfo"); if (reportRequestInfo.IsSetReportProcessingStatus()) { Console.WriteLine(" ReportProcessingStatus"); Console.WriteLine(" {0}", reportRequestInfo.ReportProcessingStatus); } if (reportRequestInfo.IsSetReportRequestId()) { Console.WriteLine(" ReportRequestId"); Console.WriteLine(" {0}", reportRequestInfo.ReportRequestId); } if (reportRequestInfo.IsSetReportType()) { Console.WriteLine(" ReportType"); Console.WriteLine(" {0}", reportRequestInfo.ReportType); } if (reportRequestInfo.IsSetStartDate()) { Console.WriteLine(" StartDate"); Console.WriteLine(" {0}", reportRequestInfo.StartDate); } if (reportRequestInfo.IsSetEndDate()) { Console.WriteLine(" EndDate"); Console.WriteLine(" {0}", reportRequestInfo.EndDate); } if (reportRequestInfo.IsSetSubmittedDate()) { Console.WriteLine(" SubmittedDate"); Console.WriteLine(" {0}", reportRequestInfo.SubmittedDate); } } if (response.IsSetResponseMetadata()) { Console.WriteLine(" ResponseMetadata"); ResponseMetadata responseMetadata = response.ResponseMetadata; if (responseMetadata.IsSetRequestId()) { Console.WriteLine(" RequestId"); Console.WriteLine(" {0}", responseMetadata.RequestId); } } Console.WriteLine(" ResponseHeaderMetadata"); Console.WriteLine(" RequestId"); Console.WriteLine(" " + response.ResponseHeaderMetadata.RequestId); Console.WriteLine(" ResponseContext"); Console.WriteLine(" " + response.ResponseHeaderMetadata.ResponseContext); Console.WriteLine(" Timestamp"); Console.WriteLine(" " + response.ResponseHeaderMetadata.Timestamp); } catch (MarketplaceWebServiceException ex) { Console.WriteLine("Caught Exception: " + ex.Message); Console.WriteLine("Response Status Code: " + ex.StatusCode); Console.WriteLine("Error Code: " + ex.ErrorCode); Console.WriteLine("Error Type: " + ex.ErrorType); Console.WriteLine("Request ID: " + ex.RequestId); Console.WriteLine("XML: " + ex.XML); Console.WriteLine("ResponseHeaderMetadata: " + ex.ResponseHeaderMetadata); } }
public static string RequestAmazonInventoryReport(string accountName, string merchantId, string marketplaceId, string accessKeyId, string secretAccessKey) { string senderEmail = ConfigurationManager.AppSettings["senderEmail"]; string messageFromPassword = ConfigurationManager.AppSettings["messageFromPassword"]; string messageToEmail = ConfigurationManager.AppSettings["messageToEmail"]; string smtpClient = ConfigurationManager.AppSettings["smtpClient"]; int smtpPortNum = ConvertUtility.ToInt(ConfigurationManager.AppSettings["smtpPortNum"]); string ReportRequestId = ""; RequestReportRequest request = new RequestReportRequest(); request.Merchant = merchantId; request.MarketplaceIdList = new IdList(); request.MarketplaceIdList.Id = new List <string>(new string[] { marketplaceId }); request.ReportType = "_GET_FLAT_FILE_OPEN_LISTINGS_DATA_"; const string applicationName = "<Your Application Name>"; const string applicationVersion = "<Your Application Version>"; MarketplaceWebServiceConfig config = new MarketplaceWebServiceConfig(); config.ServiceURL = "https://mws.amazonservices.com"; config.SetUserAgentHeader( applicationName, applicationVersion, "C#", "<Parameter 1>", "<Parameter 2>"); MarketplaceWebService.MarketplaceWebService service = new MarketplaceWebServiceClient(accessKeyId, secretAccessKey, config); try { RequestReportResponse response = service.RequestReport(request); Console.WriteLine("Service Response"); Console.WriteLine("============================================================================="); Console.WriteLine(); Console.WriteLine(" RequestReportResponse"); if (response.IsSetRequestReportResult()) { Console.WriteLine(" RequestReportResult"); RequestReportResult requestReportResult = response.RequestReportResult; ReportRequestInfo reportRequestInfo = requestReportResult.ReportRequestInfo; Console.WriteLine(" ReportRequestInfo"); if (reportRequestInfo.IsSetReportProcessingStatus()) { Console.WriteLine(" ReportProcessingStatus"); Console.WriteLine(" {0}", reportRequestInfo.ReportProcessingStatus); } if (reportRequestInfo.IsSetReportRequestId()) { Console.WriteLine(" ReportRequestId"); Console.WriteLine(" {0}", reportRequestInfo.ReportRequestId); ReportRequestId = reportRequestInfo.ReportRequestId; } if (reportRequestInfo.IsSetReportType()) { Console.WriteLine(" ReportType"); Console.WriteLine(" {0}", reportRequestInfo.ReportType); } if (reportRequestInfo.IsSetStartDate()) { Console.WriteLine(" StartDate"); Console.WriteLine(" {0}", reportRequestInfo.StartDate); } if (reportRequestInfo.IsSetEndDate()) { Console.WriteLine(" EndDate"); Console.WriteLine(" {0}", reportRequestInfo.EndDate); } if (reportRequestInfo.IsSetSubmittedDate()) { Console.WriteLine(" SubmittedDate"); Console.WriteLine(" {0}", reportRequestInfo.SubmittedDate); } } if (response.IsSetResponseMetadata()) { Console.WriteLine(" ResponseMetadata"); ResponseMetadata responseMetadata = response.ResponseMetadata; if (responseMetadata.IsSetRequestId()) { Console.WriteLine(" RequestId"); Console.WriteLine(" {0}", responseMetadata.RequestId); } } Console.WriteLine(" ResponseHeaderMetadata"); Console.WriteLine(" RequestId"); Console.WriteLine(" " + response.ResponseHeaderMetadata.RequestId); Console.WriteLine(" ResponseContext"); Console.WriteLine(" " + response.ResponseHeaderMetadata.ResponseContext); Console.WriteLine(" Timestamp"); Console.WriteLine(" " + response.ResponseHeaderMetadata.Timestamp); } catch (MarketplaceWebServiceException ex) { ExceptionUtility exceptionUtility = new ExceptionUtility(); exceptionUtility.CatchMethod(ex, "RequestAmazonInventoryReport ", accountName + " " + ex.Message.ToString(), senderEmail, messageFromPassword, messageToEmail, smtpClient, smtpPortNum); } return(ReportRequestId); }
private string getCompletedReportId(string ReportRequestId, string ReportType, bool getPriorRun) { var responseKey = $"GetReportRequestList:{_acct.AmazonAccountId}"; string s = ""; //check cache first using (var r = RedisHelper.GetRedisConnection()) { s = r.Get <string>(responseKey); } if (String.IsNullOrEmpty(s)) { IDictionary <string, string> r1 = new Dictionary <string, String>(); r1["Action"] = "GetReportRequestList"; r1["Version"] = "2009-01-01"; String serviceURL = "https://mws.amazonservices.com"; r1["MarketplaceId"] = _acct.MarketplaceId; r1["SellerId"] = _acct.SellerId; r1["ReportTypeList.Type.1"] = ReportType; r1["RequestedFromDate"] = AMZNHelper.GetFormattedTimestamp(DateTime.Now.AddDays(-1)); AMZNWebResponse wr = new AMZNWebResponse(_acct); s = wr.getResponse(serviceURL, r1); // set cache, expires in 15 seconds using (var r = RedisHelper.GetRedisConnection()) { r.Set <string>(responseKey, s, DateTime.Now.AddSeconds(15)); s = r.Get <string>(responseKey); } } try { var xDoc = XDocument.Parse(s); //dynamic root = new ExpandoObject(); XElement xe = Util.stripNS(xDoc.Elements().First()); IEnumerable <XElement> ReportRequestInfos = xe.Descendants("ReportRequestInfo"); if (getPriorRun) { return(getPriorReportId(ReportType, ReportRequestInfos)); } foreach (var ReportRequestInfo in ReportRequestInfos) { string rId = (string)ReportRequestInfo.Element("ReportRequestId"); if (!String.IsNullOrEmpty(rId) && rId == ReportRequestId) { // this will return the last one. string ReportProcessingStatus = (string)ReportRequestInfo.Element("ReportProcessingStatus"); Log.Info(_acct.AmazonAccountId, $"Report request {ReportRequestId} status = {ReportProcessingStatus}"); if (ReportProcessingStatus.StartsWith("_DONE_")) { return((string)ReportRequestInfo.Element("GeneratedReportId")); } return(ReportProcessingStatus); // break; } } } catch (Exception e) { Log.Error(_acct.AmazonAccountId, "Error getting report id", e); return(""); } return(""); }
public MemoryStream GetReportData(ReportType reportType, DateTime?startDate = null, DateTime?endDate = null) { RequestReportRequest requestReportRequest = new RequestReportRequest() .WithMarketplaceIdList(new IdList { Id = new List <string> { m_marketPlaceId } }) .WithReportType(reportType.ToString()) .WithMerchant(m_sellerId) .WithReportOptions("true"); if (startDate.HasValue) { requestReportRequest.WithStartDate(startDate.Value); } if (endDate.HasValue) { requestReportRequest.WithEndDate(endDate.Value); } Func <MemoryStream> getMemoryStream = () => { RequestReportResponse requestReportResponse = m_service.RequestReport(requestReportRequest); Func <string> getReportRequestId = () => { ReportRequestInfo reportRequestInfo = requestReportResponse.RequestReportResult.ReportRequestInfo; if (reportRequestInfo.ReportRequestId == null) { throw new RetryException("Need to wait for ReportRequestId to become not null in the getReportRequestId"); } return(reportRequestInfo.ReportRequestId); }; string reportRequestId = getReportRequestId.Retry(12, 5000); if (reportRequestId == null) { throw new QuitException("reportRequestId is null after getReportRequestId"); } GetReportRequestListRequest reportRequestList = new GetReportRequestListRequest() .WithMerchant(m_sellerId) .WithReportRequestIdList(new IdList { Id = new List <string> { reportRequestId } }); Func <string> getGeneratedReportId = () => { string generatedReportId; try { GetReportRequestListResponse reportRequestListResponse = m_service.GetReportRequestList(reportRequestList); ReportRequestInfo reportRequestInfo = reportRequestListResponse.GetReportRequestListResult.ReportRequestInfo .FirstOrDefault(w => w.ReportRequestId == reportRequestId); if (reportRequestInfo == null) { throw new RetryException("reportRequestInfo is null in getReport"); } if (reportRequestInfo.ReportProcessingStatus != "_SUBMITTED_" && reportRequestInfo.ReportProcessingStatus != "_IN_PROGRESS_") { if (reportRequestInfo.GeneratedReportId != null) { generatedReportId = reportRequestInfo.GeneratedReportId; } else { throw new QuitException("generatedReportId was null in waitForReportToProcess"); } } else { throw new RetryException("Had to wait for report to finish processing in waitForReportToProcess"); } } catch (MarketplaceWebServiceException) { // Caused by throttling, lets wait longer. Thread.Sleep(60000); throw new RetryException("Throttled due to MarketplaceWebServiceException."); } return(generatedReportId); }; string returnedGeneratedReportId = getGeneratedReportId.Retry(30, 30000); if (returnedGeneratedReportId == null) { throw new QuitException("reportId was null, from getReport"); } MemoryStream returnedMemoryStream = null; try { MemoryStream memoryStream = new MemoryStream(); GetReportRequest reportRequest = new GetReportRequest { Merchant = m_sellerId, ReportId = returnedGeneratedReportId, Report = memoryStream }; GetReportResponse response = m_service.GetReport(reportRequest); string md5String = response.GetReportResult.ContentMD5; if (!md5String.Equals(memoryStream.ComputeMd5(), StringComparison.InvariantCulture)) { throw new QuitException("contentMd5 did not match!"); } returnedMemoryStream = memoryStream; } catch (Exception e) { Console.WriteLine(e.Message); } if (returnedMemoryStream == null) { throw new QuitException("returnedMemoryStream was null."); } return(returnedMemoryStream); }; return(getMemoryStream.Retry(30, 180000, true)); }
public void UpdateData(ReportRequestInfo reportRequestData) { ReportData = reportRequestData; UpdateStatus(ReportData.ReportProcessingStatus); }