diff --git a/NzbDrone.Common/PathExtentions.cs b/NzbDrone.Common/PathExtentions.cs
index 58f997d34..d18f81304 100644
--- a/NzbDrone.Common/PathExtentions.cs
+++ b/NzbDrone.Common/PathExtentions.cs
@@ -17,6 +17,8 @@ public static class PathExtentions
public const string NZBDRONE_DB_FILE = "nzbdrone.sdf";
public const string LOG_DB_FILE = "log.sdf";
+ private const string BACKUP_ZIP_FILE = "NzbDrone_Backup.zip";
+
private const string UPDATE_SANDBOX_FOLDER_NAME = "nzbdrone_update\\";
private const string UPDATE_PACKAGE_FOLDER_NAME = "nzbdrone\\";
private const string UPDATE_BACKUP_FOLDER_NAME = "nzbdrone_backup\\";
@@ -144,9 +146,15 @@ public static string GetLogFileName(this EnviromentProvider enviromentProvider)
{
return Path.Combine(enviromentProvider.ApplicationPath, "nzbdrone.log.txt");
}
+
public static string GetArchivedLogFileName(this EnviromentProvider enviromentProvider)
{
return Path.Combine(enviromentProvider.ApplicationPath, "nzbdrone.log.0.txt");
}
+
+ public static string GetConfigBackupFile(this EnviromentProvider enviromentProvider)
+ {
+ return Path.Combine(enviromentProvider.GetAppDataPath(), BACKUP_ZIP_FILE);
+ }
}
}
\ No newline at end of file
diff --git a/NzbDrone.Core/NzbDrone.Core.csproj b/NzbDrone.Core/NzbDrone.Core.csproj
index a88c0925a..4d9492dd1 100644
--- a/NzbDrone.Core/NzbDrone.Core.csproj
+++ b/NzbDrone.Core/NzbDrone.Core.csproj
@@ -256,6 +256,7 @@
+
diff --git a/NzbDrone.Core/Providers/BackupProvider.cs b/NzbDrone.Core/Providers/BackupProvider.cs
new file mode 100644
index 000000000..734dd4d56
--- /dev/null
+++ b/NzbDrone.Core/Providers/BackupProvider.cs
@@ -0,0 +1,53 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using Ionic.Zip;
+using NLog;
+using Ninject;
+using NzbDrone.Common;
+
+namespace NzbDrone.Core.Providers
+{
+ public class BackupProvider
+ {
+ private readonly EnviromentProvider _enviromentProvider;
+ private static readonly Logger logger = LogManager.GetCurrentClassLogger();
+
+ [Inject]
+ public BackupProvider(EnviromentProvider enviromentProvider)
+ {
+ _enviromentProvider = enviromentProvider;
+ }
+
+ public BackupProvider()
+ {
+
+ }
+
+ public virtual string CreateBackupZip()
+ {
+ try
+ {
+ var dbFile = _enviromentProvider.GetNzbDronoeDbFile();
+ var configFile = _enviromentProvider.GetConfigPath();
+ var zipFile = _enviromentProvider.GetConfigBackupFile();
+
+ using (var zip = new ZipFile())
+ {
+ zip.AddFile(dbFile, String.Empty);
+ zip.AddFile(configFile, String.Empty);
+ zip.Save(zipFile);
+ }
+
+ return zipFile;
+ }
+ catch (Exception ex)
+ {
+ logger.ErrorException("Failed to create backup zip", ex);
+ throw;
+ }
+ }
+ }
+}
diff --git a/NzbDrone.Core/Providers/Core/ArchiveProvider.cs b/NzbDrone.Core/Providers/Core/ArchiveProvider.cs
index 18d87729b..48de6a983 100644
--- a/NzbDrone.Core/Providers/Core/ArchiveProvider.cs
+++ b/NzbDrone.Core/Providers/Core/ArchiveProvider.cs
@@ -10,19 +10,7 @@ namespace NzbDrone.Core.Providers.Core
{
public class ArchiveProvider
{
- private readonly EnviromentProvider _enviromentProvider;
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
-
- [Inject]
- public ArchiveProvider(EnviromentProvider enviromentProvider)
- {
- _enviromentProvider = enviromentProvider;
- }
-
- public ArchiveProvider()
- {
-
- }
public virtual void ExtractArchive(string compressedFile, string destination)
{
@@ -35,29 +23,5 @@ public virtual void ExtractArchive(string compressedFile, string destination)
logger.Trace("Extraction complete.");
}
-
- public virtual FileInfo CreateBackupZip()
- {
- try
- {
- var dbFile = PathExtentions.GetNzbDronoeDbFile(_enviromentProvider);
- var configFile = PathExtentions.GetConfigPath(_enviromentProvider);
- var zipFile = Path.Combine(PathExtentions.GetAppDataPath(_enviromentProvider), "NzbDrone_Backup.zip");
-
- using (var zip = new ZipFile())
- {
- zip.AddFile(dbFile, String.Empty);
- zip.AddFile(configFile, String.Empty);
- zip.Save(zipFile);
- }
-
- return new FileInfo(zipFile);
- }
- catch(Exception ex)
- {
- logger.WarnException("Failed to create backup zip", ex);
- return null;
- }
- }
}
}
\ No newline at end of file
diff --git a/NzbDrone.Web/Controllers/SystemController.cs b/NzbDrone.Web/Controllers/SystemController.cs
index f58d72938..87a3789c5 100644
--- a/NzbDrone.Web/Controllers/SystemController.cs
+++ b/NzbDrone.Web/Controllers/SystemController.cs
@@ -19,17 +19,17 @@ public class SystemController : Controller
private readonly IndexerProvider _indexerProvider;
private readonly ConfigProvider _configProvider;
private readonly DiskProvider _diskProvider;
- private readonly ArchiveProvider _archiveProvider;
+ private readonly BackupProvider _backupProvider;
public SystemController(JobProvider jobProvider, IndexerProvider indexerProvider,
ConfigProvider configProvider, DiskProvider diskProvider,
- ArchiveProvider archiveProvider)
+ BackupProvider backupProvider)
{
_jobProvider = jobProvider;
_indexerProvider = indexerProvider;
_configProvider = configProvider;
_diskProvider = diskProvider;
- _archiveProvider = archiveProvider;
+ _backupProvider = backupProvider;
}
public ActionResult Jobs()
@@ -149,8 +149,10 @@ public JsonResult RunJob(string typeName)
public ActionResult Backup()
{
- var file = _archiveProvider.CreateBackupZip();
- return File(file.FullName, "application/binary", file.Name);
+ var file = _backupProvider.CreateBackupZip();
+ var fileInfo = new FileInfo(file);
+
+ return File(fileInfo.FullName, "application/binary", fileInfo.Name);
}
}
}