private bool DirectoryExists(Uri uri)
{
CheckUri(uri);
try
{
var absolutePath = ResolvePath(uri.AbsoluteUri);
var serverUri = string.Format("{0}{1}", ftpRoot, absolutePath);
var ftpRequest = CreateFtpRequest(serverUri);
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
try
{
var response = (FtpWebResponse)ftpRequest.GetResponse();
response.Close();
return true;
}
catch (WebException ex)
{
var response = (FtpWebResponse)ex.Response;
var statusCode = response.StatusCode;
response.Close();
if (statusCode == FtpStatusCode.ActionNotTakenFileUnavailable)
{
return false;
}
throw;
}
}
catch (Exception e)
{
throw new StorageException(string.Format("Failed to check if object exists under {0}.", uri), e);
}
}