private static byte[] Do(FtpExecutionMode mode, string method, string uri, byte[] requestBody, string renameTo = null)
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
request.EnableSsl = mode.UseSsl;
request.UsePassive = mode.UsePassive;
request.Method = method;
if (renameTo != null)
{
request.RenameTo = renameTo;
}
MemoryStream requestMemStream = null;
if (requestBody != null)
{
requestMemStream = new MemoryStream(requestBody);
}
if (mode.UseAsync)
{
try
{
Task<MemoryStream> t = DoAsync(request, requestMemStream);
return t.Result.ToArray();
}
catch (AggregateException e)
{
throw e.InnerException;
}
}
else if (mode.UseOldStyleAsync)
{
return DoOldStyleAsync(request, requestMemStream).ToArray();
}
else
{
return DoSync(request, requestMemStream).ToArray();
}
}