public JsonResult RenamePendingProcessing(string path) { path = path.Replace('|', Path.DirectorySeparatorChar).Replace('^', Path.VolumeSeparatorChar).Replace('`', '\''); var di = new DirectoryInfo(path); var dropDir = di.Parent.FullName; var folder = di.Name; if (!folder.StartsWith("_UNPACK_") && !folder.StartsWith("_FAILED_")) { return new JsonResult { Data = "no change" } } ; folder = folder.Substring(8); var newPath = dropDir + Path.DirectorySeparatorChar + folder; _diskProvider.MoveDirectory(path, newPath); return(new JsonResult { Data = "ok" }); }
public virtual void DeleteDirectory(string path) { logger.Trace("Attempting to send '{0}' to recycling bin", path); var recyclingBin = _configProvider.RecycleBin; if (String.IsNullOrWhiteSpace(recyclingBin)) { logger.Info("Recycling Bin has not been configured, deleting permanently. {0}", path); _diskProvider.DeleteFolder(path, true); logger.Trace("Folder has been permanently deleted: {0}", path); } else { var destination = Path.Combine(recyclingBin, new DirectoryInfo(path).Name); logger.Trace("Moving '{0}' to '{1}'", path, destination); _diskProvider.MoveDirectory(path, destination); logger.Trace("Setting last accessed: {0}", path); _diskProvider.DirectorySetLastWriteTimeUtc(destination, DateTime.UtcNow); foreach (var file in _diskProvider.GetFiles(destination, SearchOption.AllDirectories)) { _diskProvider.FileSetLastWriteTimeUtc(file, DateTime.UtcNow); } logger.Trace("Folder has been moved to the recycling bin: {0}", destination); } }
public void MoveFolder_should_overright_existing_folder() { var diskProvider = new DiskProvider(); diskProvider.CopyDirectory(BinFolder.FullName, BinFolderCopy.FullName); diskProvider.CopyDirectory(BinFolder.FullName, BinFolderMove.FullName); VerifyCopy(); //Act diskProvider.MoveDirectory(BinFolderCopy.FullName, BinFolderMove.FullName); //Assert VerifyMove(); }
public virtual void Start(ProgressNotification notification, dynamic options) { notification.CurrentMessage = "Checking for updates"; var updatePackage = _updateProvider.GetAvilableUpdate(_environmentProvider.Version); //No updates available if (updatePackage == null) { return; } var packageDestination = Path.Combine(_environmentProvider.GetUpdateSandboxFolder(), updatePackage.FileName); if (_diskProvider.FolderExists(_environmentProvider.GetUpdateSandboxFolder())) { logger.Info("Deleting old update files"); _diskProvider.DeleteFolder(_environmentProvider.GetUpdateSandboxFolder(), true); } logger.Info("Downloading update package from [{0}] to [{1}]", updatePackage.Url, packageDestination); notification.CurrentMessage = "Downloading Update " + updatePackage.Version; _httpProvider.DownloadFile(updatePackage.Url, packageDestination); logger.Info("Download completed for update package from [{0}]", updatePackage.FileName); logger.Info("Extracting Update package"); notification.CurrentMessage = "Extracting Update"; _archiveProvider.ExtractArchive(packageDestination, _environmentProvider.GetUpdateSandboxFolder()); logger.Info("Update package extracted successfully"); logger.Info("Preparing client"); notification.CurrentMessage = "Preparing to start Update"; _diskProvider.MoveDirectory(_environmentProvider.GetUpdateClientFolder(), _environmentProvider.GetUpdateSandboxFolder()); logger.Info("Starting update client"); var startInfo = new ProcessStartInfo { FileName = _environmentProvider.GetUpdateClientExePath(), Arguments = string.Format("{0} {1}", _environmentProvider.NzbDroneProcessIdFromEnviroment, _configFileProvider.Guid) }; var process = _processProvider.Start(startInfo); notification.CurrentMessage = "Update in progress. NzbDrone will restart shortly."; _processProvider.WaitForExit(process); }
private void TagFolder(DirectoryInfo directory, PostDownloadStatusType status) { //Turning off tagging folder for now, to stop messing people's series folders. return; var target = GetTaggedFolderName(directory, status); if (!DiskProvider.PathEquals(target, directory.FullName)) { Logger.Warn("Unable to download [{0}]. Status: {1}", directory.Name, status); _diskProvider.MoveDirectory(directory.FullName, target); } else { Logger.Debug("Unable to download [{0}], {1}", directory.Name, status); } }