private void OnFileChanged(object sender, EventArgs e) { var _e = (FileSystemEventArgs)e; //check if directory is excluded foreach (var ignored_dir in _excludedDirectories) { if (_e.FullPath.StartsWith(ignored_dir)) { return; } } string remotePath; string remoteFullPath; FtpOperationEventArgs ftpOperationArgs; switch (_e.ChangeType.ToString()) { case "Deleted": remotePath = _e.FullPath.Substring(_settings.LocalPath.Length); remotePath = remotePath.Remove(remotePath.Length - _e.Name.Length, _e.Name.Length); remotePath = remotePath.Replace("\\", "/"); remoteFullPath = _settings.RemotePath + remotePath + _e.Name; _ftpClient.DeleteFile(remoteFullPath); ftpOperationArgs = new FtpOperationEventArgs(); ftpOperationArgs.Operation = "deleted"; ftpOperationArgs.RemoteFullPath = remoteFullPath; RaiseOnFtpOperationFinishedEvent(ftpOperationArgs); break; case "Created": case "Changed": remotePath = _e.FullPath.Substring(_settings.LocalPath.Length); remotePath = remotePath.Remove(remotePath.Length - _e.Name.Length, _e.Name.Length); remotePath = remotePath.Replace("\\", "/"); remoteFullPath = _settings.RemotePath + remotePath + _e.Name; var success = _ftpClient.UploadFile(_e.FullPath, remoteFullPath); if (success) { ftpOperationArgs = new FtpOperationEventArgs(); ftpOperationArgs.Operation = "uploaded"; ftpOperationArgs.RemoteFullPath = remoteFullPath; RaiseOnFtpOperationFinishedEvent(ftpOperationArgs); } else { ftpOperationArgs = new FtpOperationEventArgs(); ftpOperationArgs.Operation = "failed to upload"; ftpOperationArgs.RemoteFullPath = remoteFullPath; RaiseOnFtpOperationFinishedEvent(ftpOperationArgs); } break; default: break; } }
private static void OnFtpOperationFinished(object sender, FtpOperationEventArgs e) { Console.WriteLine("{0} {1} {2}", DateTime.Now, e.Operation, e.RemoteFullPath); }
protected virtual void RaiseOnFtpOperationFinishedEvent(FtpOperationEventArgs e) { FtpOperationFinished?.Invoke(this, e); }