private static string ParseURLParams(AzureFunctionTestRequestDto function, string url)
        {
            var parametersString = string.Empty;

            foreach (var paramName in function.parameters.Keys)
            {
                var paramValue  = function.parameters[paramName];
                var stringValue = string.Empty;
                if (paramValue is List <object> )
                {
                    foreach (var element in paramValue as IEnumerable <object> )
                    {
                        stringValue += "," + HttpUtility.UrlEncode(element.ToString());
                    }
                    if (stringValue.Length > 0)
                    {
                        stringValue = stringValue.Substring(1);
                    }
                }
                else
                {
                    stringValue = HttpUtility.UrlEncode(paramValue.ToString());
                }
                parametersString += "&" + paramName + "=" + stringValue;
            }
            if (parametersString.Length > 0)
            {
                parametersString = parametersString.Substring(0);
                url += url.Contains("?") ? "&" : "?";
                url += parametersString;
            }

            return(url);
        }
        /// <summary>
        /// Evalua una funcion.
        /// </summary>
        /// <param name="function">FunciĆ³n a evaluar.</param>
        /// <returns>Resultado de la prueba.</returns>
        public async Task <bool> TestFunctionAsync(AzureFunctionTestRequestDto function)
        {
            var success  = false;
            var url      = string.Empty;
            var jsonBody = string.Empty;

            try
            {
                using (WebClient webClient = new WebClient())
                {
                    ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
                    url = HOST.Replace(FUNCTION_NAME_TOKEN, function.name);
                    string response = null;
                    if (function.isPost)
                    {
                        webClient.Headers[HttpRequestHeader.ContentType] = "application/json";
                        jsonBody = JsonConvert.SerializeObject(function.parameters);
                        var start = DateTime.Now;
                        response = await webClient.UploadStringTaskAsync(url, jsonBody);

                        var ends     = DateTime.Now;
                        var duration = ends.Millisecond - start.Millisecond;
                        LogUtil.Info(" [POST] [" + function.name + "] [" + duration + " ms] [" + function.testAlias + "] : " + response);
                    }
                    if (function.isGet)
                    {
                        url = ParseURLParams(function, url);
                        var start = DateTime.Now;
                        response = await webClient.DownloadStringTaskAsync(url);

                        var ends     = DateTime.Now;
                        var duration = ends.Millisecond - start.Millisecond;
                        LogUtil.Info(" [GET] [" + function.name + "] [" + duration + " ms] [" + function.testAlias + "] : " + response);
                    }
                    success = true;
                }
            }
            catch (Exception ex)
            {
                LogUtil.Error(new Dictionary <string, object>
                {
                    { "Error", "Error on test function \"" + function.name + "\": " + ex.Message },
                    { "URL", url },
                    { "JsonBody", jsonBody },
                    { "Function", function },
                    { "Exception", ex }
                });
            }
            return(success);
        }