Exemple #1
0
        private void Execute(ISender client, DoPathRename message)
        {
            bool   isError       = false;
            string statusMessage = null;

            Action <string> onError = (msg) =>
            {
                isError       = true;
                statusMessage = msg;
            };

            try
            {
                switch (message.PathType)
                {
                case FileType.Directory:
                    Directory.Move(message.Path, message.NewPath);
                    client.Send(new SetStatusFileManager
                    {
                        Message = "Renamed directory",
                        SetLastDirectorySeen = false
                    });
                    break;

                case FileType.File:
                    File.Move(message.Path, message.NewPath);
                    client.Send(new SetStatusFileManager
                    {
                        Message = "Renamed file",
                        SetLastDirectorySeen = false
                    });
                    break;
                }

                Execute(client, new GetDirectory {
                    RemotePath = Path.GetDirectoryName(message.NewPath)
                });
            }
            catch (UnauthorizedAccessException)
            {
                onError("RenamePath No permission");
            }
            catch (PathTooLongException)
            {
                onError("RenamePath Path too long");
            }
            catch (DirectoryNotFoundException)
            {
                onError("RenamePath Path not found");
            }
            catch (IOException)
            {
                onError("RenamePath I/O error");
            }
            catch (Exception)
            {
                onError("RenamePath Failed");
            }
            finally
            {
                if (isError && !string.IsNullOrEmpty(statusMessage))
                {
                    client.Send(new SetStatusFileManager {
                        Message = statusMessage, SetLastDirectorySeen = false
                    });
                }
            }
        }
Exemple #2
0
        public static void HandleDoPathRename(DoPathRename command, Networking.Client client)
        {
            bool   isError = false;
            string message = null;

            Action <string> onError = (msg) =>
            {
                isError = true;
                message = msg;
            };

            try
            {
                switch (command.PathType)
                {
                case FileType.Directory:
                    Directory.Move(command.Path, command.NewPath);
                    client.Send(new SetStatusFileManager
                    {
                        Message = "Renamed directory",
                        SetLastDirectorySeen = false
                    });
                    break;

                case FileType.File:
                    System.IO.File.Move(command.Path, command.NewPath);
                    client.Send(new SetStatusFileManager
                    {
                        Message = "Renamed file",
                        SetLastDirectorySeen = false
                    });
                    break;
                }

                HandleGetDirectory(new GetDirectory {
                    RemotePath = Path.GetDirectoryName(command.NewPath)
                }, client);
            }
            catch (UnauthorizedAccessException)
            {
                onError("RenamePath No permission");
            }
            catch (PathTooLongException)
            {
                onError("RenamePath Path too long");
            }
            catch (DirectoryNotFoundException)
            {
                onError("RenamePath Path not found");
            }
            catch (IOException)
            {
                onError("RenamePath I/O error");
            }
            catch (Exception)
            {
                onError("RenamePath Failed");
            }
            finally
            {
                if (isError && !string.IsNullOrEmpty(message))
                {
                    client.Send(new SetStatusFileManager {
                        Message = message, SetLastDirectorySeen = false
                    });
                }
            }
        }