private async Task<HttpResponseMessage> InvokeBatchExecutionService(string url, string api)
{
var response = new HttpResponseMessage();
try
{
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", api);
//Task<string> response = null;
//response = client.GetStringAsync(url);
BatchScoreStatus status = new BatchScoreStatus();
response = await client.GetAsync(url);
if (!response.IsSuccessStatusCode)
{
response.StatusCode = HttpStatusCode.NotFound;
return response;
}
status = await response.Content.ReadAsAsync<BatchScoreStatus>();
if (status.StatusCode == BatchScoreStatusCode.NotStarted || status.StatusCode == BatchScoreStatusCode.Running)
{
response.StatusCode = HttpStatusCode.Accepted;
response.Headers.Location = new Uri(Request.RequestUri.AbsoluteUri); // Set location same with last time.
response.Headers.Add("Retry-after", "30");
}
else if (status.StatusCode == BatchScoreStatusCode.Failed || status.StatusCode == BatchScoreStatusCode.Cancelled)
{
response.StatusCode = HttpStatusCode.InternalServerError;
}
else if (status.StatusCode == BatchScoreStatusCode.Finished)
{
status.SetAdditionInformation();
response = Request.CreateResponse<BatchScoreStatus>(HttpStatusCode.OK, status);
}
return response;
}
}
catch (Exception ex)
{
response.StatusCode = HttpStatusCode.InternalServerError;
response.ReasonPhrase = ex.Message;
return response;
}
}
public class res_output