Kavita/Kavita.Models/AutoMapper/Converters/ServerSettingConverter.cs
Fesaa c62b20f54b
BE Tech Debt (#4497)
Co-authored-by: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Co-authored-by: Joe Milazzo <josephmajora@gmail.com>
2026-03-07 10:04:08 -08:00

154 lines
7.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Text.Json;
using AutoMapper;
using Kavita.Models.DTOs.Settings;
using Kavita.Models.Entities;
using Kavita.Models.Entities.Enums;
namespace Kavita.Models.AutoMapper.Converters;
public class ServerSettingConverter : ITypeConverter<IEnumerable<ServerSetting>, ServerSettingDto>
{
public ServerSettingDto Convert(IEnumerable<ServerSetting> source, ServerSettingDto destination, ResolutionContext context)
{
destination ??= new ServerSettingDto();
foreach (var row in source)
{
switch (row.Key)
{
case ServerSettingKey.CacheDirectory:
destination.CacheDirectory = row.Value;
break;
case ServerSettingKey.TaskScan:
destination.TaskScan = row.Value;
break;
case ServerSettingKey.TaskBackup:
destination.TaskBackup = row.Value;
break;
case ServerSettingKey.TaskCleanup:
destination.TaskCleanup = row.Value;
break;
case ServerSettingKey.LoggingLevel:
destination.LoggingLevel = row.Value;
break;
case ServerSettingKey.Port:
destination.Port = int.Parse(row.Value, CultureInfo.InvariantCulture);
break;
case ServerSettingKey.IpAddresses:
destination.IpAddresses = row.Value;
break;
case ServerSettingKey.AllowStatCollection:
destination.AllowStatCollection = bool.Parse(row.Value);
break;
case ServerSettingKey.EnableOpds:
destination.EnableOpds = bool.Parse(row.Value);
break;
case ServerSettingKey.BaseUrl:
destination.BaseUrl = row.Value;
break;
case ServerSettingKey.BookmarkDirectory:
destination.BookmarksDirectory = row.Value;
break;
case ServerSettingKey.InstallVersion:
destination.InstallVersion = row.Value;
break;
case ServerSettingKey.TotalBackups:
destination.TotalBackups = int.Parse(row.Value, CultureInfo.InvariantCulture);
break;
case ServerSettingKey.InstallId:
destination.InstallId = row.Value;
break;
case ServerSettingKey.EnableFolderWatching:
destination.EnableFolderWatching = bool.Parse(row.Value);
break;
case ServerSettingKey.TotalLogs:
destination.TotalLogs = int.Parse(row.Value, CultureInfo.InvariantCulture);
break;
case ServerSettingKey.HostName:
destination.HostName = row.Value;
break;
case ServerSettingKey.CacheSize:
destination.CacheSize = long.Parse(row.Value, CultureInfo.InvariantCulture);
break;
case ServerSettingKey.OnDeckProgressDays:
destination.OnDeckProgressDays = int.Parse(row.Value, CultureInfo.InvariantCulture);
break;
case ServerSettingKey.OnDeckUpdateDays:
destination.OnDeckUpdateDays = int.Parse(row.Value, CultureInfo.InvariantCulture);
break;
case ServerSettingKey.CoverImageSize:
destination.CoverImageSize = Enum.Parse<CoverImageSize>(row.Value);
break;
case ServerSettingKey.PdfRenderResolution:
destination.PdfRenderResolution = Enum.Parse<PdfRenderResolution>(row.Value);
break;
case ServerSettingKey.EncodeMediaAs:
destination.EncodeMediaAs = Enum.Parse<EncodeFormat>(row.Value);
break;
case ServerSettingKey.BackupDirectory:
destination.BookmarksDirectory = row.Value;
break;
case ServerSettingKey.EmailHost:
destination.SmtpConfig ??= new SmtpConfigDto();
destination.SmtpConfig.Host = row.Value ?? string.Empty;
break;
case ServerSettingKey.EmailPort:
destination.SmtpConfig ??= new SmtpConfigDto();
destination.SmtpConfig.Port = string.IsNullOrEmpty(row.Value) ? 0 : int.Parse(row.Value, CultureInfo.InvariantCulture);
break;
case ServerSettingKey.EmailAuthPassword:
destination.SmtpConfig ??= new SmtpConfigDto();
destination.SmtpConfig.Password = row.Value;
break;
case ServerSettingKey.EmailAuthUserName:
destination.SmtpConfig ??= new SmtpConfigDto();
destination.SmtpConfig.UserName = row.Value;
break;
case ServerSettingKey.EmailSenderAddress:
destination.SmtpConfig ??= new SmtpConfigDto();
destination.SmtpConfig.SenderAddress = row.Value;
break;
case ServerSettingKey.EmailSenderDisplayName:
destination.SmtpConfig ??= new SmtpConfigDto();
destination.SmtpConfig.SenderDisplayName = row.Value;
break;
case ServerSettingKey.EmailEnableSsl:
destination.SmtpConfig ??= new SmtpConfigDto();
destination.SmtpConfig.EnableSsl = bool.Parse(row.Value);
break;
case ServerSettingKey.EmailSizeLimit:
destination.SmtpConfig ??= new SmtpConfigDto();
destination.SmtpConfig.SizeLimit = int.Parse(row.Value, CultureInfo.InvariantCulture);
break;
case ServerSettingKey.EmailCustomizedTemplates:
destination.SmtpConfig ??= new SmtpConfigDto();
destination.SmtpConfig.CustomizedTemplates = bool.Parse(row.Value);
break;
case ServerSettingKey.FirstInstallDate:
destination.FirstInstallDate = DateTime.Parse(row.Value, CultureInfo.InvariantCulture);
break;
case ServerSettingKey.FirstInstallVersion:
destination.FirstInstallVersion = row.Value;
break;
case ServerSettingKey.StatsApiHits:
destination.StatsApiHits = int.Parse(row.Value);
break;
case ServerSettingKey.OidcConfiguration:
destination.OidcConfig = JsonSerializer.Deserialize<OidcConfigDto>(row.Value)!;
break;
case ServerSettingKey.LicenseKey:
case ServerSettingKey.EnableAuthentication:
case ServerSettingKey.EmailServiceUrl:
case ServerSettingKey.ConvertBookmarkToWebP:
case ServerSettingKey.ConvertCoverToWebP:
default:
break;
}
}
return destination;
}
}