public void backup_Files(string backupFolder)
        {
            var files_BackupFolder = backupFolder.pathCombine("Files");

            files_BackupFolder.createDir();

            var files = WikiApi.allImages();

            "there are {0} files to download".info(files.size());
            Status_ProgressBar.maximum(files.size());
            Status_ProgressBar.value(0);
            foreach (var file in files)
            {
                if (CancelBackup)
                {
                    "In backup_Files, CancelBackup was set, so aborting backup".error();
                    break;
                }
                var web = new Web();
                if (WikiApi.BasicAuth.valid())
                {
                    web.Headers_Request.add("Authorization", "Basic " + WikiApi.BasicAuth);
                }
                web.downloadBinaryFile(file, files_BackupFolder);
                Status_ProgressBar.increment(1);
            }
        }
        public void savePages(string backupFolder, string targetFolder, List <string> pages, string mappingsFileName)
        {
            string pageMappings = "";

            "there are: {0} pages to save".info(pages.size());
            Status_ProgressBar.maximum(pages.size());
            Status_ProgressBar.value(0);
            foreach (var page in pages)
            {
                if (CancelBackup)
                {
                    "In savePages, CancelBackup was set, so aborting backup".error();
                    break;
                }
                pageMappings += "{0}	{1}".format(page, page.base64Encode()).line();
                var saveFileName = "{0}.wikitext.txt".format(Files.getSafeFileNameString(page));
                WikiApi.raw(page).saveAs(targetFolder.pathCombine(saveFileName));
                Status_ProgressBar.increment(1);
            }
            pageMappings.saveAs(backupFolder.pathCombine(mappingsFileName));
        }