Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
                }
            });
        }
Exemple #3
0
 public void Delete(Data.Models.FtpFolder model)
 {
     //Delete the item
     _repo.Delete(model);
 }
Exemple #4
0
 public void Update(Data.Models.FtpFolder model)
 {
     //Update item
     _repo.Update(model);
 }
Exemple #5
0
 public void Create(Data.Models.FtpFolder model)
 {
     //Create item
     _repo.Insert(model);
 }