aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/ConfigurationService.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-02-09 18:08:01 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-02-09 18:08:01 -0500
commit44bb192ce0e286ced703394f733ca033b489ebc5 (patch)
treeec893218d10581513b4679d6b7da490c3c49ecf9 /MediaBrowser.Api/ConfigurationService.cs
parent6ff59b7e590be140781292206a55822742f2c8fa (diff)
update wizard function of enable/disable local metadata saving
Diffstat (limited to 'MediaBrowser.Api/ConfigurationService.cs')
-rw-r--r--MediaBrowser.Api/ConfigurationService.cs90
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;
+ }
}
}