public OperationStatus GetOperationStatus(Guid operationId, bool blocked = false)
{
OperationStatus operationStatus = null;
var statusUrl = SchedulerConstants.StatusRelativePath + operationId.ToString();
var statusWebRequest = CreateWebApiRequest(statusUrl);
statusWebRequest.Method = HttpMethod.Get.Method;
try
{
var statusWebResponse = (HttpWebResponse) statusWebRequest.GetResponse();
using (var sr = new StreamReader(statusWebResponse.GetResponseStream()))
{
var jsonResponse = sr.ReadToEnd();
operationStatus = JsonConvert.DeserializeObject<OperationStatus>(jsonResponse);
}
}
catch (WebException we)
{
throw CreateSchedulerException(we);
}
if (operationStatus != null && operationStatus.Status == StatusCode.Pending)
{
if (blocked)
operationStatus = Poll(statusUrl);
}
if(operationStatus != null && (operationStatus.Status == StatusCode.Success || operationStatus.Status == StatusCode.Error) )
operationStatus.Data = JsonConvert.DeserializeObject<Dictionary<string, object>>(operationStatus.Data.ToString());
return operationStatus;
}