private void ProcessFile(FluentFTP.FtpListItem item, Data.Models.FtpFolder folder) { Data.Models.FtpFile file = null; lock (_locker) file = filesList.FirstOrDefault(f => f.FullName == item.FullName.Trim()); if (null == file) { FtpFileService.Create(new Data.Models.FtpFile { Extension = System.IO.Path.GetExtension(item.Name), FileDate = item.Modified, FileSize = item.Size, FolderId = folder.Id, FullName = item.FullName, ServerId = Server.Id, ShortName = item.Name }); } else { file.Extension = System.IO.Path.GetExtension(item.Name); file.FileDate = item.Modified; file.FileSize = item.Size; file.FolderId = folder.Id; file.FullName = item.FullName; file.ServerId = Server.Id; file.ShortName = item.Name; FtpFileService.Update(file); } }
private void ProcessFolderFiles(FluentFTP.FtpClient client, String directory, Data.Models.FtpFolder parentFolder = null) { Data.Models.FtpFolder folder = null; lock (_locker) folder = folderList.FirstOrDefault(f => f.FullName == directory.Trim()); if (folder == null) { FtpFolderService.Create(folder = new Data.Models.FtpFolder { FullName = directory, ServerId = Server.Id, ShortName = GetDirectoryName(directory) ?? "", FolderId = parentFolder?.Id }); } else { folder.Modified = DateTime.Now; folder.FolderId = parentFolder?.Id; FtpFolderService.Update(folder); } var list = client.GetListing(directory); //cannot be done in parallel some servers might be limited to 1 connection per IP list.ForEach((item) => { if (item.Type == FluentFTP.FtpFileSystemObjectType.Directory) { ProcessFolderFiles(client, item.FullName, folder); } else if (item.Type == FluentFTP.FtpFileSystemObjectType.File) { ProcessFile(item, folder); } }); }
public void Delete(Data.Models.FtpFolder model) { //Delete the item _repo.Delete(model); }
public void Update(Data.Models.FtpFolder model) { //Update item _repo.Update(model); }
public void Create(Data.Models.FtpFolder model) { //Create item _repo.Insert(model); }