SetAdditionInformation() public method

Set two more Informations 1. Status Descriton 2. Set full link for each output.
public SetAdditionInformation ( ) : void
return void
        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);
            }
        }
        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 static async Task <BatchScoreStatus> InvokeBatchExecutionService(BES_Obj besobj)
        {
            // set a time out for polling status
            //const int TimeOutInMilliseconds = 120 * 10000; // Set a timeout of 20 minutes
            BatchScoreStatus status  = new BatchScoreStatus();
            string           BaseUrl = besobj.GetAPIURL();

            string strApiVersion = besobj.GetApiVersion();

            if (!strApiVersion.Contains("api-version=2.0"))
            {
                status.StatusCode = 0;
                status.Details    = "Invalid API version. Please check your Post URL is from version 2.0 of the API help page.";
                status.SetAdditionInformation();
                return(status);
            }

            BaseUrl = BaseUrl.Substring(0, BaseUrl.LastIndexOf("/jobs") + 5);   // Correct BaseUrl don't have api-version
            string apiKey = besobj.GetAPIKey();


            using (HttpClient client = new HttpClient())
            {
                var request = new BatchExecutionRequest()
                {
                    Input            = besobj.GenerateInput(),
                    Outputs          = besobj.GenerateOutputs(),
                    GlobalParameters = besobj.GenerateGlobalParameters()
                };

                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);


                //Submitting the job...
                // submit the job
                var response = await client.PostAsJsonAsync(BaseUrl + "?" + strApiVersion, request);

                if (!response.IsSuccessStatusCode)
                {
                    status.StatusCode = 0;
                    status.Details    = response.ReasonPhrase + ". Job submission encountered error. Please check input.";
                    status.SetAdditionInformation();
                    return(status);
                }

                string jobId = await response.Content.ReadAsAsync <string>();

                Console.WriteLine(string.Format("Job ID: {0}", jobId));

                response = await client.PostAsync(BaseUrl + "/" + jobId + "/start?" + strApiVersion, null);

                string jobLocation = BaseUrl + "/" + jobId + "?" + strApiVersion;
                status.JobLocation = jobLocation;
                return(status);


                // start the job
                //Starting the job...
                //response = await client.PostAsync(BaseUrl + "/" + jobId + "/start?" + strApiVersion, null);
                //if (!response.IsSuccessStatusCode)
                //{
                //    status.StatusCode = 0;
                //    status.Details = response.ReasonPhrase + ". Cannot get status of Job Id " + jobId;
                //    status.SetAdditionInformation();
                //    return null;
                //}

                //string jobLocation = BaseUrl + "/" + jobId + "?" + strApiVersion;
                //Stopwatch watch = Stopwatch.StartNew();
                //bool done = false;
                //while (!done)

                //{
                //    //Checking the job status...
                //    response = await client.GetAsync(jobLocation);
                //    if (!response.IsSuccessStatusCode)
                //    {

                //        return null;
                //    }

                //    status = await response.Content.ReadAsAsync<BatchScoreStatus>();
                //    if (watch.ElapsedMilliseconds > TimeOutInMilliseconds)
                //    {
                //        done = true;
                //        await client.DeleteAsync(jobLocation);
                //    }
                //    switch (status.StatusCode)
                //    {
                //        case BatchScoreStatusCode.NotStarted:
                //            break;
                //        case BatchScoreStatusCode.Running:
                //            break;
                //        case BatchScoreStatusCode.Failed:
                //            done = true;
                //            break;
                //        case BatchScoreStatusCode.Cancelled:
                //            done = true;
                //            break;
                //        case BatchScoreStatusCode.Finished:
                //            done = true;
                //            break;
                //    }

                //    if (!done)
                //    {
                //        Thread.Sleep(1000); // Wait one second
                //    }
                //}

                //status.SetAdditionInformation();
                //return status;
            }
        }
        public static async Task<BatchScoreStatus> InvokeBatchExecutionService(BES_Obj besobj)
        {
            

            // set a time out for polling status
            //const int TimeOutInMilliseconds = 120 * 10000; // Set a timeout of 20 minutes
            BatchScoreStatus status = new BatchScoreStatus();
            string BaseUrl = besobj.GetAPIURL();

            string strApiVersion = besobj.GetApiVersion();
            if(!strApiVersion.Contains("api-version=2.0"))
            {
                status.StatusCode = 0;
                status.Details = "Invalid API version. Please check your Post URL is from version 2.0 of the API help page.";
                status.SetAdditionInformation();
                return status;
            }

            BaseUrl = BaseUrl.Substring(0, BaseUrl.LastIndexOf("/jobs") + 5);   // Correct BaseUrl don't have api-version
            string apiKey = besobj.GetAPIKey();

            
            using (HttpClient client = new HttpClient())
            {
                var request = new BatchExecutionRequest()
                {
                    Input = besobj.GenerateInput(),
                    Outputs = besobj.GenerateOutputs(),
                    GlobalParameters = besobj.GenerateGlobalParameters()                    
                };

                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);


                //Submitting the job...
                // submit the job
                var response = await client.PostAsJsonAsync(BaseUrl + "?" + strApiVersion, request);
                if (!response.IsSuccessStatusCode)
                {
                    status.StatusCode = 0;
                    status.Details = response.ReasonPhrase + ". Job submission encountered error. Please check input.";
                    status.SetAdditionInformation();
                    return status;
                }

                string jobId = await response.Content.ReadAsAsync<string>();
                Console.WriteLine(string.Format("Job ID: {0}", jobId));

                response = await client.PostAsync(BaseUrl + "/" + jobId + "/start?" + strApiVersion, null);

                string jobLocation = BaseUrl + "/" + jobId + "?" + strApiVersion;
                status.JobLocation = jobLocation;
                return status;


                // start the job
                //Starting the job...
                //response = await client.PostAsync(BaseUrl + "/" + jobId + "/start?" + strApiVersion, null);
                //if (!response.IsSuccessStatusCode)
                //{
                //    status.StatusCode = 0;
                //    status.Details = response.ReasonPhrase + ". Cannot get status of Job Id " + jobId;
                //    status.SetAdditionInformation();
                //    return null;
                //}

                //string jobLocation = BaseUrl + "/" + jobId + "?" + strApiVersion;
                //Stopwatch watch = Stopwatch.StartNew();
                //bool done = false;                
                //while (!done)

                //{
                //    //Checking the job status...
                //    response = await client.GetAsync(jobLocation);
                //    if (!response.IsSuccessStatusCode)
                //    {   
                        
                //        return null;
                //    }

                //    status = await response.Content.ReadAsAsync<BatchScoreStatus>();
                //    if (watch.ElapsedMilliseconds > TimeOutInMilliseconds)
                //    {
                //        done = true;
                //        await client.DeleteAsync(jobLocation);
                //    }
                //    switch (status.StatusCode)
                //    {
                //        case BatchScoreStatusCode.NotStarted:
                //            break;
                //        case BatchScoreStatusCode.Running:
                //            break;
                //        case BatchScoreStatusCode.Failed:
                //            done = true;
                //            break;
                //        case BatchScoreStatusCode.Cancelled:
                //            done = true;
                //            break;
                //        case BatchScoreStatusCode.Finished:
                //            done = true;
                //            break;
                //    }

                //    if (!done)
                //    {
                //        Thread.Sleep(1000); // Wait one second
                //    }
                //}

                //status.SetAdditionInformation();
                //return status;
            }

        }