public static IEnumerable <CompositeRootCommandResponse> SendRequest(WebRequest request, IEnumerable <FileInfo> files)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var formFields = GetFormFields(request.RequestUri);

            var returnedBytes = CompositeRootHttpServerTesterConnection.SendMultipartFormDataRequest(
                request,
                files.Select(f => f.FullName).ToArray(),
                formFields, out string responseContentType, out string responseContentEncoding);

            try
            {
                return(JsonConvert.DeserializeObject <CompositeRootCommandResponse[]>(Encoding.UTF8.GetString(returnedBytes)) as IEnumerable <CompositeRootCommandResponse>);
            }
            catch
            {
                return(new CompositeRootCommandResponse[]
                {
                    new CompositeRootCommandResponse
                    {
                        Success = true,
                        ReturnValue = returnedBytes,
                        ReturnValueContentType = responseContentType,
                        ReturnValueContentEncoding = responseContentEncoding
                    }
                });
            }
        }
        public static IEnumerable <CompositeRootCommandResponse> SendRequest(CompositeRootConfiguration configuration, string command, IEnumerable <FileInfo> files, string sessionToken)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            var commandPath = new Uri("file:///" + command);
            var formFields  = GetFormFields(commandPath);

            var returnedBytes = CompositeRootHttpServerTesterConnection.SendMultipartFormDataRequest(
                configuration.Endpoint + sessionToken + commandPath.AbsolutePath,
                files.Select(f => f.FullName).ToArray(),
                formFields, out string responseContentType, out string responseContentEncoding);

            try
            {
                return(JsonConvert.DeserializeObject <CompositeRootCommandResponse[]>(Encoding.UTF8.GetString(returnedBytes)) as IEnumerable <CompositeRootCommandResponse>);
            }
            catch
            {
                return(new CompositeRootCommandResponse[]
                {
                    new CompositeRootCommandResponse
                    {
                        Success = true,
                        ReturnValue = returnedBytes,
                        ReturnValueContentType = responseContentType,
                        ReturnValueContentEncoding = responseContentEncoding
                    }
                });
            }
        }