cambooth/src/CamBooth/CamBooth.App/Core/AppSettings/AppSettingsService.cs

97 lines
3.6 KiB
C#
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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");
}