mirror of
https://github.com/Kareadita/Kavita.git
synced 2025-05-24 00:52:23 -04:00
60 lines
2.8 KiB
C#
60 lines
2.8 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using API.Services;
|
|
using Flurl.Http;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace API.Data.ManualMigrations;
|
|
|
|
public static class MigrateEmailTemplates
|
|
{
|
|
private const string EmailChange = "https://raw.githubusercontent.com/Kareadita/KavitaEmail/main/KavitaEmail/config/templates/EmailChange.html";
|
|
private const string EmailConfirm = "https://raw.githubusercontent.com/Kareadita/KavitaEmail/main/KavitaEmail/config/templates/EmailConfirm.html";
|
|
private const string EmailPasswordReset = "https://raw.githubusercontent.com/Kareadita/KavitaEmail/main/KavitaEmail/config/templates/EmailPasswordReset.html";
|
|
private const string SendToDevice = "https://raw.githubusercontent.com/Kareadita/KavitaEmail/main/KavitaEmail/config/templates/SendToDevice.html";
|
|
private const string EmailTest = "https://raw.githubusercontent.com/Kareadita/KavitaEmail/main/KavitaEmail/config/templates/EmailTest.html";
|
|
|
|
public static async Task Migrate(IDirectoryService directoryService, ILogger<Program> logger)
|
|
{
|
|
var files = directoryService.GetFiles(directoryService.CustomizedTemplateDirectory);
|
|
if (files.Any())
|
|
{
|
|
return;
|
|
}
|
|
|
|
logger.LogCritical("Running MigrateEmailTemplates migration - Please be patient, this may take some time. This is not an error");
|
|
|
|
// Write files to directory
|
|
await DownloadAndWriteToFile(EmailChange, Path.Join(directoryService.CustomizedTemplateDirectory, "EmailChange.html"), logger);
|
|
await DownloadAndWriteToFile(EmailConfirm, Path.Join(directoryService.CustomizedTemplateDirectory, "EmailConfirm.html"), logger);
|
|
await DownloadAndWriteToFile(EmailPasswordReset, Path.Join(directoryService.CustomizedTemplateDirectory, "EmailPasswordReset.html"), logger);
|
|
await DownloadAndWriteToFile(SendToDevice, Path.Join(directoryService.CustomizedTemplateDirectory, "SendToDevice.html"), logger);
|
|
await DownloadAndWriteToFile(EmailTest, Path.Join(directoryService.CustomizedTemplateDirectory, "EmailTest.html"), logger);
|
|
|
|
|
|
logger.LogCritical("Running MigrateEmailTemplates migration - Completed. This is not an error");
|
|
}
|
|
|
|
private static async Task DownloadAndWriteToFile(string url, string filePath, ILogger<Program> logger)
|
|
{
|
|
try
|
|
{
|
|
// Download the raw text using Flurl
|
|
var content = await url.GetStringAsync();
|
|
|
|
// Write the content to a file
|
|
await File.WriteAllTextAsync(filePath, content);
|
|
|
|
logger.LogInformation("{File} downloaded and written successfully", filePath);
|
|
}
|
|
catch (FlurlHttpException ex)
|
|
{
|
|
logger.LogError(ex, "Unable to download {Url} to {FilePath}. Please perform yourself!", url, filePath);
|
|
}
|
|
}
|
|
|
|
|
|
}
|