/// <summary> /// Pools the status of the job until completion or timeout /// </summary> /// <param name="JobID"></param> /// <param name="poolingInternvalInMs"></param> /// <param name="numberOfPoolingAttempts"></param> /// <returns>the JobInfoResponse or throws timeout exception</returns> public GetBulkJobInfoResponse WaitForBulkJobToComplete(string JobID, int poolingInternvalInMs = 1000, int numberOfPoolingAttempts = 60 *5) { bool bulkUpsertCompleted = false; int getJobInfoAttempts = 0; bool poolingTimeout = false; GetBulkJobInfoResponse GetBulkJobInfoResponse = null; while (bulkUpsertCompleted == false && poolingTimeout == false) { if (getJobInfoAttempts > 0) { Thread.Sleep(poolingInternvalInMs); } GetBulkJobInfoResponse = GetBulkJobInfo(JobID); bulkUpsertCompleted = GetBulkJobInfoResponse.Status != "Not Started" && GetBulkJobInfoResponse.Status != "In Progress"; getJobInfoAttempts++; poolingTimeout = (getJobInfoAttempts == numberOfPoolingAttempts); } if (poolingTimeout == true) { throw new PepperiException("Bulk Upload did not complete within " + poolingInternvalInMs * numberOfPoolingAttempts + " ms"); } //bulkUpsertCompleted return(GetBulkJobInfoResponse); }
public GetBulkJobInfoResponse GetBulkJobInfo(string JobID) { string RequestUri = string.Format("bulk/jobinfo/{0}", HttpUtility.UrlEncode(JobID)); Dictionary <string, string> dicQueryStringParameters = new Dictionary <string, string>(); string accept = "application/json"; PepperiHttpClient PepperiHttpClient = new PepperiHttpClient(this.Authentication, this.Logger); PepperiHttpClientResponse PepperiHttpClientResponse = PepperiHttpClient.Get( ApiBaseUri, RequestUri, dicQueryStringParameters, accept); PepperiHttpClient.HandleError(PepperiHttpClientResponse); GetBulkJobInfoResponse result = PepperiJsonSerializer.DeserializeOne <GetBulkJobInfoResponse>(PepperiHttpClientResponse.Body); //Api returns single object return(result); }