using System.Linq; using System.Reflection; using Lidarr.Http; using Lidarr.Http.REST.Attributes; using Microsoft.AspNetCore.Mvc; using NzbDrone.Core.Configuration; namespace Lidarr.Api.V1.Config { [V1ApiController("config/ui")] public class UiConfigController : ConfigController { private readonly IConfigFileProvider _configFileProvider; public UiConfigController(IConfigFileProvider configFileProvider, IConfigService configService) : base(configService) { _configFileProvider = configFileProvider; } [RestPutById] public override ActionResult SaveConfig(UiConfigResource resource) { var dictionary = resource.GetType() .GetProperties(BindingFlags.Instance | BindingFlags.Public) .ToDictionary(prop => prop.Name, prop => prop.GetValue(resource, null)); _configFileProvider.SaveConfigDictionary(dictionary); _configService.SaveConfigDictionary(dictionary); return Accepted(resource.Id); } protected override UiConfigResource ToResource(IConfigService model) { return UiConfigResourceMapper.ToResource(_configFileProvider, model); } } }