public PepperiAuditLog AuditLogPolling(string auditLogId, int poolingInternvalInMs = 1000, int numberOfPoolingAttempts = 60 * 5) { PepperiAuditLog result = null; var current = 0; var isStillPolling = true; while (current < numberOfPoolingAttempts && isStillPolling) { Thread.Sleep(poolingInternvalInMs); current += 1; var log = GetAuditLog(auditLogId); var statusId = log?.Status?.ID; if (statusId != (int)ePepperiAuditLogStatus.InProgress) { isStillPolling = false; result = log; } } return(result); }
private UDC_UploadFile_Result GetImportFileDataResult(PepperiAuditLog auditLog) { var logResultObject = auditLog?.AuditInfo?.ResultObject; var parsedResultObject = PepperiJsonSerializer.DeserializeOne <UDC_UploadFile_AuditLog_ResultObject>(logResultObject); var url = parsedResultObject?.URI; ValuesValidator.Validate(url, "Can't get URI Response!"); var HttpClient = new HttpClient(new LoggingHandler(this.Logger)) { }; //send request HttpClient.Timeout = new TimeSpan(0, 5, 0);// by default wait 5 minutes HttpResponseMessage HttpResponseMessage = HttpClient.GetAsync(url).Result; string body = HttpResponseMessage.Content.ReadAsStringAsync().Result; ValuesValidator.Validate(HttpResponseMessage.StatusCode == HttpStatusCode.OK, $"Can't get Required File! (Status Code - {HttpResponseMessage.StatusCode})"); var table = PepperiJsonSerializer.DeserializeCollection <UDC_UploadFile_Row>(body); var result = new UDC_UploadFile_Result() { Success = true, Total = table.Count(), TotalUpdated = 0, TotalIgnored = 0, TotalFailed = 0, FailedRows = new List <UDC_UploadFile_Row>() { } }; var grouped = table.GroupBy(row => row.Status); foreach (var gropedRow in grouped) { switch (gropedRow.Key) { case "Error": result.TotalFailed = gropedRow.Count(); result.FailedRows = gropedRow.ToList(); break; case "Update": result.TotalUpdated = gropedRow.Count(); break; case "Insert": result.TotalInserted = gropedRow.Count(); break; case "Ignore": result.TotalIgnored = gropedRow.Count(); break; default: break; } } return(result); }