private Task DownloadDirectory(IFtpClient client, ILocalDirectory storageFolder, string remoteDirectoryPath) { return(Task.Run(() => { var files = client.GetItems(remoteDirectoryPath); if (files.Any()) { foreach (var file in files.Where(w => w.Type == FileSystemItemType.File)) { DownloadFile(client, storageFolder, file.FullName, file, false); } foreach (var folder in files.Where(w => w.Type == FileSystemItemType.Directory)) { var newFolder = storageFolder.CreateFolderAsync(folder.Name).Result; DownloadDirectory(client, newFolder, folder.FullName).Wait(); } } return files; })); }
protected override void FileAction(IFtpClient client) { DirectoryItems = client.GetItems(Path); }