diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-02-09 18:08:01 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-02-09 18:08:01 -0500 |
| commit | 44bb192ce0e286ced703394f733ca033b489ebc5 (patch) | |
| tree | ec893218d10581513b4679d6b7da490c3c49ecf9 /MediaBrowser.Api/ConfigurationService.cs | |
| parent | 6ff59b7e590be140781292206a55822742f2c8fa (diff) | |
update wizard function of enable/disable local metadata saving
Diffstat (limited to 'MediaBrowser.Api/ConfigurationService.cs')
| -rw-r--r-- | MediaBrowser.Api/ConfigurationService.cs | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/MediaBrowser.Api/ConfigurationService.cs b/MediaBrowser.Api/ConfigurationService.cs index b2a5fa7a7..98897b9d1 100644 --- a/MediaBrowser.Api/ConfigurationService.cs +++ b/MediaBrowser.Api/ConfigurationService.cs @@ -1,10 +1,15 @@ using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Entities.Movies; +using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Serialization; using ServiceStack; +using System; using System.Collections.Generic; using System.Linq; @@ -43,6 +48,13 @@ namespace MediaBrowser.Api } + [Route("/System/Configuration/SaveLocalMetadata", "POST")] + [Api(("Updates saving of local metadata and images for all types"))] + public class UpdateSaveLocalMetadata : IReturnVoid + { + public bool Enabled { get; set; } + } + public class ConfigurationService : BaseApiService { /// <summary> @@ -106,5 +118,83 @@ namespace MediaBrowser.Api { return ToOptimizedSerializedResultUsingCache(_providerManager.GetAllMetadataPlugins().ToList()); } + + /// <summary> + /// This is a temporary method used until image settings get broken out. + /// </summary> + /// <param name="request"></param> + public void Post(UpdateSaveLocalMetadata request) + { + var config = _configurationManager.Configuration; + + if (request.Enabled) + { + config.SaveLocalMeta = true; + + foreach (var options in config.MetadataOptions) + { + options.DisabledMetadataSavers = new string[] { }; + } + } + else + { + config.SaveLocalMeta = false; + + DisableSaversForType(typeof(Game), config); + DisableSaversForType(typeof(GameSystem), config); + DisableSaversForType(typeof(Movie), config); + DisableSaversForType(typeof(Trailer), config); + DisableSaversForType(typeof(BoxSet), config); + DisableSaversForType(typeof(Book), config); + DisableSaversForType(typeof(Series), config); + DisableSaversForType(typeof(Season), config); + DisableSaversForType(typeof(Episode), config); + DisableSaversForType(typeof(MusicAlbum), config); + DisableSaversForType(typeof(MusicArtist), config); + DisableSaversForType(typeof(AdultVideo), config); + DisableSaversForType(typeof(MusicVideo), config); + DisableSaversForType(typeof(Video), config); + } + + _configurationManager.SaveConfiguration(); + } + + private void DisableSaversForType(Type type, ServerConfiguration config) + { + var options = GetMetadataOptions(type, config); + + const string mediabrowserSaverName = "Media Browser Xml"; + + if (!options.DisabledMetadataSavers.Contains(mediabrowserSaverName, StringComparer.OrdinalIgnoreCase)) + { + var list = options.DisabledMetadataSavers.ToList(); + + list.Add(mediabrowserSaverName); + + options.DisabledMetadataSavers = list.ToArray(); + } + } + + private MetadataOptions GetMetadataOptions(Type type, ServerConfiguration config) + { + var options = config.MetadataOptions + .FirstOrDefault(i => string.Equals(i.ItemType, type.Name, StringComparison.OrdinalIgnoreCase)); + + if (options == null) + { + var list = config.MetadataOptions.ToList(); + + options = new MetadataOptions + { + ItemType = type.Name + }; + + list.Add(options); + + config.MetadataOptions = list.ToArray(); + } + + return options; + } } } |
