OneDrive Backup
OneDrive Backup
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
using hassio_onedrive_backup;
|
||||
using hassio_onedrive_backup.Contracts;
|
||||
using onedrive_backup.Hass;
|
||||
using onedrive_backup.Models;
|
||||
using static hassio_onedrive_backup.Contracts.HassBackupsResponse;
|
||||
using Addon = hassio_onedrive_backup.Contracts.HassAddonsResponse.Addon;
|
||||
|
||||
namespace onedrive_backup.Extensions
|
||||
{
|
||||
public static class BackupExtensions
|
||||
{
|
||||
public static BackupModel ToBackupModel(this Backup backup, HassContext hassContext)
|
||||
{
|
||||
return new BackupModel
|
||||
{
|
||||
Slug = backup.Slug,
|
||||
Date = backup.Date,
|
||||
Name = backup.Name,
|
||||
Type = backup.Type,
|
||||
Size = backup.Size,
|
||||
IsProtected = backup.Protected,
|
||||
Location = BackupModel.BackupLocation.Local,
|
||||
Addons = backup.Content?.Addons?.Select(slug => new Addon { Slug = slug, Name = GetAddonNameFromSlug(hassContext.Addons, slug) }).ToList() ?? Enumerable.Empty<Addon>(),
|
||||
Folders = backup.Content?.Folders ?? Enumerable.Empty<string>()
|
||||
};
|
||||
}
|
||||
|
||||
public static BackupModel ToBackupModel(this OnedriveBackup onedriveBackup, HassContext hassContext)
|
||||
{
|
||||
return new BackupModel
|
||||
{
|
||||
Slug = onedriveBackup.Slug,
|
||||
Date = onedriveBackup.BackupDate,
|
||||
OneDriveFileName = onedriveBackup.FileName,
|
||||
Type = onedriveBackup.Type,
|
||||
Size = onedriveBackup.Size,
|
||||
IsProtected = onedriveBackup.IsProtected,
|
||||
Location = BackupModel.BackupLocation.OneDrive,
|
||||
Addons = onedriveBackup.Addons?.Select(slug => new Addon { Slug = slug, Name = GetAddonNameFromSlug(hassContext.Addons, slug) }) ?? Enumerable.Empty<Addon>(),
|
||||
Folders = onedriveBackup.Folders ?? Enumerable.Empty<string>()
|
||||
};
|
||||
}
|
||||
|
||||
public static OnedriveBackup ToOneDriveBackup(this BackupModel backupModel)
|
||||
{
|
||||
return new OnedriveBackup
|
||||
{
|
||||
Addons = backupModel.Addons.Select(addon => addon.Slug),
|
||||
BackupDate = backupModel.Date,
|
||||
FileName = backupModel.OneDriveFileName,
|
||||
Folders = backupModel.Folders,
|
||||
IsProtected = backupModel.IsProtected,
|
||||
Slug = backupModel.Slug,
|
||||
Type = backupModel.Type,
|
||||
Size = backupModel.Size
|
||||
};
|
||||
}
|
||||
|
||||
public static Backup ToBackup(this BackupModel backupModel)
|
||||
{
|
||||
return new Backup
|
||||
{
|
||||
Date = backupModel.Date,
|
||||
Protected = backupModel.IsProtected,
|
||||
Slug = backupModel.Slug,
|
||||
Type = backupModel.Type,
|
||||
Size = backupModel.Size,
|
||||
Name = backupModel.DisplayName,
|
||||
Content = new Content
|
||||
{
|
||||
Addons = backupModel.Addons.Select(addon => addon.Slug).ToArray() ?? Enumerable.Empty<string>().ToArray(),
|
||||
Folders = backupModel.Folders?.ToArray() ?? Enumerable.Empty<string>().ToArray()
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static string GetAddonNameFromSlug(IEnumerable<Addon> addons, string slug)
|
||||
{
|
||||
ConsoleLogger.LogVerbose($"Looking for Addon name matching slug: {slug}. Checking agaisnt {addons.Count()} Addons in cache ");
|
||||
string name = addons.FirstOrDefault(addon => addon.Slug.Equals(slug, StringComparison.OrdinalIgnoreCase))?.Name;
|
||||
return name ?? string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using onedrive_backup.Middleware;
|
||||
|
||||
namespace onedrive_backup.Extensions
|
||||
{
|
||||
public static class MiddlewareExtensions
|
||||
{
|
||||
public static IApplicationBuilder UseHassUrlExtractor(
|
||||
this IApplicationBuilder builder)
|
||||
{
|
||||
return builder.UseMiddleware<ExtractHassUrlMiddleware>();
|
||||
}
|
||||
|
||||
public static IApplicationBuilder UseIncomingHassFirewallMiddleware(this IApplicationBuilder builder )
|
||||
{
|
||||
return builder.UseMiddleware<IncomingHassFirewallMiddleware>();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user