using MareSynchronosShared.Utils.Configuration; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; namespace MareSynchronosShared.Services; [Route("configuration/[controller]")] [Authorize(Policy = "Internal")] public class MareConfigurationController : Controller where T : class, IMareConfiguration { private readonly ILogger> _logger; private IOptionsMonitor _config; public MareConfigurationController(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 MareStaticFilesServerConfigurationController : MareConfigurationController { public MareStaticFilesServerConfigurationController(IOptionsMonitor config, ILogger logger) : base(config, logger) { } } public class MareBaseConfigurationController : MareConfigurationController { public MareBaseConfigurationController(IOptionsMonitor config, ILogger logger) : base(config, logger) { } } public class MareServerConfigurationController : MareConfigurationController { public MareServerConfigurationController(IOptionsMonitor config, ILogger logger) : base(config, logger) { } } public class MareServicesConfigurationController : MareConfigurationController { public MareServicesConfigurationController(IOptionsMonitor config, ILogger logger) : base(config, logger) { } } #pragma warning restore MA0048 // File name must match type name