using LightlessSyncShared.Utils.Configuration; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; namespace LightlessSyncShared.Services; [Route("configuration/[controller]")] [Authorize(Policy = "Internal")] public class LightlessConfigurationController : Controller where T : class, ILightlessConfiguration { private readonly ILogger> _logger; private IOptionsMonitor _config; public LightlessConfigurationController(IOptionsMonitor config, ILogger> logger) { _config = config; _logger = logger; } [HttpGet("GetConfigurationEntry")] [Authorize(Policy = "Internal")] public IActionResult GetConfigurationEntry(string key, string defaultValue) { var result = _config.CurrentValue.SerializeValue(key, defaultValue); _logger.LogInformation("Requested " + key + ", returning:" + result); return Ok(result); } } #pragma warning disable MA0048 // File name must match type name public class LightlessStaticFilesServerConfigurationController : LightlessConfigurationController { public LightlessStaticFilesServerConfigurationController(IOptionsMonitor config, ILogger logger) : base(config, logger) { } } public class LightlessBaseConfigurationController : LightlessConfigurationController { public LightlessBaseConfigurationController(IOptionsMonitor config, ILogger logger) : base(config, logger) { } } public class LightlessServerConfigurationController : LightlessConfigurationController { public LightlessServerConfigurationController(IOptionsMonitor config, ILogger logger) : base(config, logger) { } } public class LightlessServicesConfigurationController : LightlessConfigurationController { public LightlessServicesConfigurationController(IOptionsMonitor config, ILogger logger) : base(config, logger) { } } #pragma warning restore MA0048 // File name must match type name