using System; using System.Collections.Generic; using Nancy; using NzbDrone.Api.Extensions; using NzbDrone.Core.Configuration; namespace NzbDrone.Api.Config { public class SettingsModule : NzbDroneApiModule { private readonly IConfigService _configService; private readonly IConfigFileProvider _configFileProvider; public SettingsModule(IConfigService configService, IConfigFileProvider configFileProvider) : base("/settings") { _configService = configService; _configFileProvider = configFileProvider; Get["/"] = x => GetGeneralSettings(); Post["/"] = x => SaveGeneralSettings(); Get["/host"] = x => GetHostSettings(); Post["/host"] = x => SaveHostSettings(); Get["/log"] = x => GetLogSettings(); Post["/log"] = x => SaveLogSettings(); } private Response SaveLogSettings() { throw new NotImplementedException(); } private Response GetLogSettings() { throw new NotImplementedException(); } private Response SaveHostSettings() { var request = Request.Body.FromJson>(); _configFileProvider.SaveConfigDictionary(request); return GetHostSettings(); } private Response GetHostSettings() { return _configFileProvider.GetConfigDictionary().AsResponse(); } private Response GetGeneralSettings() { var collection = Request.Query.Collection; if (collection.HasValue && Boolean.Parse(collection.Value)) return _configService.All().AsResponse(); return _configService.AllWithDefaults().AsResponse(); } private Response SaveGeneralSettings() { var request = Request.Body.FromJson>(); _configService.SaveValues(request); return request.AsResponse(); } } }