public static async System.Threading.Tasks.Task RunGetAllDataAsync(Microsoft.SqlServer.Dts.Tasks.ScriptTask.ScriptObjectModel dts, List <ExtractEndpoint> extractRequests)
        {
            var  pendingRequests = new List <System.Threading.Tasks.Task>();
            bool fireAgain       = true;

            try
            {
                for (var i = 0; i < _batch && extractRequests.Count > 0; i++)
                {
                    SendRequest(pendingRequests, extractRequests, dts);
                }

                while (pendingRequests.Count > 0)
                {
                    System.Threading.Tasks.Task finishedTask = await System.Threading.Tasks.Task.WhenAny(pendingRequests);

                    pendingRequests.Remove(finishedTask);
                    dts.Events.FireInformation(0, "Consume WebAPI", $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fffff")} Task {finishedTask.Id.ToString()} is {finishedTask.Status}", string.Empty, 0, ref fireAgain);
                    if (extractRequests.Count > 0)
                    {
                        SendRequest(pendingRequests, extractRequests, dts);
                    }
                }
            }
            catch (Exception ex)
            {
                dts.Events.FireError(0, "Consume WebAPI", $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fffff")} {ex.Message.ToString()}", string.Empty, 0);
                dts.TaskResult = (int)ScriptResults.Failure;
            }
        }
        public static async System.Threading.Tasks.Task <HttpStatusCode> GetDataAsync(string name, string endpoint, Microsoft.SqlServer.Dts.Tasks.ScriptTask.ScriptObjectModel dts)
        {
            bool fireAgain = true;
            var  response  = await _client.GetAsync(endpoint);

            string result = await response.Content.ReadAsStringAsync();

            if (response.IsSuccessStatusCode)
            {
                dts.Events.FireInformation(0, "Consume WebAPI", $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fffff")} Request {name} on {endpoint} has status: {(int)response.StatusCode} - {response.ReasonPhrase}", string.Empty, 0, ref fireAgain);
                var fileName = Path.Combine(_outboundFolder, name + "_" + DateTime.Now.ToString("yyyyMMdd_HHmmssfffff") + ".json");
                File.AppendAllText(fileName, result);
            }
            else
            {
                dts.Events.FireWarning(0, "Consume WebAPI", $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fffff")} Request {name} on {endpoint} has status: {(int)response.StatusCode} - {response.ReasonPhrase} \n{result}", string.Empty, 0);
            }
            return(response.StatusCode);
        }
        public static void SendRequest(List <System.Threading.Tasks.Task> getDataTasks, List <ExtractEndpoint> endpointList, Microsoft.SqlServer.Dts.Tasks.ScriptTask.ScriptObjectModel dts)
        {
            bool fireAgain    = true;
            var  responseTask = GetDataAsync(endpointList[0].Name, endpointList[0].Endpoint, dts);

            getDataTasks.Add(responseTask);
            dts.Events.FireInformation(0, "Consume WebAPI", $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fffff")} Task {responseTask.Id.ToString()} for request {endpointList[0].Name} is {responseTask.Status}", string.Empty, 0, ref fireAgain);
            endpointList.RemoveAt(0);
        }