public async Task<OperationStatus> GetOperationStatusAsync(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) await statusWebRequest.GetResponseAsync();
using (var sr = new StreamReader(statusWebResponse.GetResponseStream()))
{
var jsonResponse = await sr.ReadToEndAsync();
operationStatus = JsonConvert.DeserializeObject<OperationStatus>(jsonResponse);
}
}
catch (WebException we)
{
CreateSchedulerException(we);
}
if (operationStatus != null && operationStatus.Status == StatusCode.Pending)
{
if (blocked)
operationStatus = await PollAsync(statusUrl);
}
if (operationStatus != null && operationStatus.Data != null)
operationStatus.Data = JsonObject.Parse(operationStatus.Data.ToString());
return operationStatus;
}