97 lines
3.6 KiB
C#
97 lines
3.6 KiB
C#
using CamBooth.App.Core.Logging;
|
||
|
||
namespace CamBooth.App.Core.AppSettings;
|
||
|
||
using Microsoft.Extensions.Configuration;
|
||
|
||
public class AppSettingsService
|
||
{
|
||
private readonly Logger _logger;
|
||
|
||
IConfigurationRoot configuration;
|
||
|
||
private string loadedConfigFile = string.Empty;
|
||
|
||
public AppSettingsService(Logger logger)
|
||
{
|
||
this._logger = logger;
|
||
this.Initialize();
|
||
}
|
||
|
||
|
||
private void Initialize()
|
||
{
|
||
var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production";
|
||
|
||
loadedConfigFile = "Core/AppSettings/app.settings.json";
|
||
var configBuilder = new ConfigurationBuilder()
|
||
.SetBasePath(AppContext.BaseDirectory)
|
||
.AddJsonFile(loadedConfigFile, optional: false, reloadOnChange: true);
|
||
|
||
// Lade umgebungsspezifische Konfigurationsdatei
|
||
if (environment == "Development")
|
||
{
|
||
configBuilder.AddJsonFile("Core/AppSettings/app.settings.dev.json", optional: true, reloadOnChange: true);
|
||
loadedConfigFile = "Core/AppSettings/app.settings.dev.json";
|
||
}
|
||
|
||
configuration = configBuilder.Build();
|
||
|
||
_logger.Info($"Konfiguration geladen aus: {loadedConfigFile} (Environment: {environment})");
|
||
}
|
||
|
||
public bool IsDebugMode => bool.Parse(configuration["AppSettings:IsDebugMode"] ?? "false");
|
||
|
||
public string? AppName => configuration["AppSettings:AppName"];
|
||
|
||
public bool IsDebugConsoleVisible => bool.Parse(configuration["AppSettings:DebugConsoleVisible"] ?? string.Empty);
|
||
|
||
public string? PictureLocation => configuration["AppSettings:PictureLocation"];
|
||
|
||
public int PhotoCountdownSeconds => int.Parse(configuration["AppSettings:PhotoCountdownSeconds"] ?? "5");
|
||
|
||
public int FocusDelaySeconds => int.Parse(configuration["AppSettings:FocusDelaySeconds"] ?? "2");
|
||
|
||
public int FocusTimeoutMs => int.Parse(configuration["AppSettings:FocusTimeoutMs"] ?? "3000");
|
||
|
||
public bool IsShutdownEnabled => bool.Parse(configuration["AppSettings:IsShutdownEnabled"] ?? "false");
|
||
|
||
public bool UseMockCamera => bool.Parse(configuration["AppSettings:UseMockCamera"] ?? "false");
|
||
|
||
public string? ConnectionString => configuration.GetConnectionString("DefaultConnection");
|
||
|
||
public string ConfigFileName => loadedConfigFile;
|
||
|
||
// Logging Settings
|
||
public string LogLevel => configuration["LoggingSettings:LogLevel"] ?? "Information";
|
||
|
||
public string LogDirectory => configuration["LoggingSettings:LogDirectory"] ?? "Logs";
|
||
|
||
public string? RemoteServerUrl => configuration["LoggingSettings:RemoteServerUrl"];
|
||
|
||
public string? RemoteServerApiKey => configuration["LoggingSettings:RemoteServerApiKey"];
|
||
|
||
// Lychee Upload Settings (deprecated - wird durch PhotoPrism ersetzt)
|
||
public string? LycheeApiUrl => configuration["LycheeSettings:ApiUrl"];
|
||
|
||
public string? LycheeUsername => configuration["LycheeSettings:Username"];
|
||
|
||
public string? LycheePassword => configuration["LycheeSettings:Password"];
|
||
|
||
public string? LycheeDefaultAlbumId => configuration["LycheeSettings:DefaultAlbumId"];
|
||
|
||
public bool LycheeAutoUploadEnabled => bool.Parse(configuration["LycheeSettings:AutoUploadEnabled"] ?? "false");
|
||
|
||
// PhotoPrism Upload Settings
|
||
public string? PhotoPrismApiUrl => configuration["PhotoPrismSettings:ApiUrl"];
|
||
|
||
public string? PhotoPrismApiKey => configuration["PhotoPrismSettings:ApiKey"];
|
||
|
||
public string? PhotoPrismUsername => configuration["PhotoPrismSettings:Username"];
|
||
|
||
public string? PhotoPrismPassword => configuration["PhotoPrismSettings:Password"];
|
||
|
||
public string? PhotoPrismAlbumShareUrl => configuration["PhotoPrismSettings:AlbumShareUrl"];
|
||
|
||
public bool PhotoPrismAutoUploadEnabled => bool.Parse(configuration["PhotoPrismSettings:AutoUploadEnabled"] ?? "false");
|
||
} |