public RenameFileNameTask(string filePath, string hash, bool anonymise) : base(ResourceType.File, filePath)
 {
     InnerTask = new Task(() =>
     {
         if (anonymise)
         {
             FileRenameHelper.AnonymizeFile(filePath, hash);
         }
         else
         {
             FileRenameHelper.DeanonymizeFile(filePath, hash);
         }
     });
 }
        public BulkRenameFolderTask(string folderUri, string sessionPasswordHash, bool includeSubfolders, bool anonymize) : base(ResourceType.Folder, folderUri)
        {
            InnerTask = new Task(() =>
            {
                if (folderUri == null)
                {
                    throw new ArgumentNullException(nameof(folderUri));
                }
                if (sessionPasswordHash == null)
                {
                    throw new ArgumentNullException(nameof(sessionPasswordHash));
                }
                if (!Directory.Exists(folderUri))
                {
                    throw new DirectoryNotFoundException(nameof(folderUri));
                }

                RenameFilesInFolder(folderUri);

                void RenameFilesInFolder(string uri)
                {
                    foreach (var file in Directory.GetFiles(uri))
                    {
                        if (anonymize)
                        {
                            FileRenameHelper.AnonymizeFile(file, sessionPasswordHash);
                        }
                        else
                        {
                            FileRenameHelper.DeanonymizeFile(file, sessionPasswordHash);
                        }
                    }

                    if (!includeSubfolders)
                    {
                        return;
                    }

                    foreach (var subFolder in Directory.GetDirectories(uri))
                    {
                        RenameFilesInFolder(subFolder);
                    }
                }
            });
        }