 7639066249
			
		
	
	7639066249
	
	
	
		
			
			some refactoring fix some stuff add http context accessor configure metrics as well commit 713d054ccb965f7adb8eafa6e3fb52853a1e6dd2 (partial, Docker only)
		
			
				
	
	
		
			61 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| 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<T> : Controller where T : class, IMareConfiguration
 | |
| {
 | |
|     private readonly ILogger<MareConfigurationController<T>> _logger;
 | |
|     private IOptionsMonitor<T> _config;
 | |
| 
 | |
|     public MareConfigurationController(IOptionsMonitor<T> config, ILogger<MareConfigurationController<T>> 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<StaticFilesServerConfiguration>
 | |
| {
 | |
|     public MareStaticFilesServerConfigurationController(IOptionsMonitor<StaticFilesServerConfiguration> config, ILogger<MareStaticFilesServerConfigurationController> logger) : base(config, logger)
 | |
|     {
 | |
|     }
 | |
| }
 | |
| 
 | |
| public class MareBaseConfigurationController : MareConfigurationController<MareConfigurationBase>
 | |
| {
 | |
|     public MareBaseConfigurationController(IOptionsMonitor<MareConfigurationBase> config, ILogger<MareBaseConfigurationController> logger) : base(config, logger)
 | |
|     {
 | |
|     }
 | |
| }
 | |
| 
 | |
| public class MareServerConfigurationController : MareConfigurationController<ServerConfiguration>
 | |
| {
 | |
|     public MareServerConfigurationController(IOptionsMonitor<ServerConfiguration> config, ILogger<MareServerConfigurationController> logger) : base(config, logger)
 | |
|     {
 | |
|     }
 | |
| }
 | |
| 
 | |
| public class MareServicesConfigurationController : MareConfigurationController<ServicesConfiguration>
 | |
| {
 | |
|     public MareServicesConfigurationController(IOptionsMonitor<ServicesConfiguration> config, ILogger<MareServicesConfigurationController> logger) : base(config, logger)
 | |
|     {
 | |
|     }
 | |
| }
 | |
| #pragma warning restore MA0048 // File name must match type name
 |