ソースを参照

Moved server configuration to the model so that the UI can read it

LukePulverenti Luke Pulverenti luke pulverenti 12 年 前
コミット
e52833059b

+ 15 - 0
MediaBrowser.Api/HttpHandlers/ServerConfigurationHandler.cs

@@ -0,0 +1,15 @@
+using System.Threading.Tasks;
+using MediaBrowser.Common.Net.Handlers;
+using MediaBrowser.Controller;
+using MediaBrowser.Model.Configuration;
+
+namespace MediaBrowser.Api.HttpHandlers
+{
+    class ServerConfigurationHandler : BaseSerializationHandler<ServerConfiguration>
+    {
+        protected override Task<ServerConfiguration> GetObjectToSerialize()
+        {
+            return Task.FromResult<ServerConfiguration>(Kernel.Instance.Configuration);
+        }
+    }
+}

+ 1 - 0
MediaBrowser.Api/MediaBrowser.Api.csproj

@@ -65,6 +65,7 @@
     <Compile Include="HttpHandlers\PersonHandler.cs" />
     <Compile Include="HttpHandlers\PluginConfigurationHandler.cs" />
     <Compile Include="HttpHandlers\PluginsHandler.cs" />
+    <Compile Include="HttpHandlers\ServerConfigurationHandler.cs" />
     <Compile Include="HttpHandlers\StudioHandler.cs" />
     <Compile Include="HttpHandlers\StudiosHandler.cs" />
     <Compile Include="HttpHandlers\UsersHandler.cs" />

+ 4 - 0
MediaBrowser.Api/Plugin.cs

@@ -105,6 +105,10 @@ namespace MediaBrowser.Api
             {
                 return new WeatherHandler();
             }
+            else if (localPath.EndsWith("/api/cerverconfiguration", StringComparison.OrdinalIgnoreCase))
+            {
+                return new ServerConfigurationHandler();
+            }
 
             return null;
         }

+ 16 - 2
MediaBrowser.ApiInteraction/ApiClient.cs

@@ -4,6 +4,7 @@ using System.IO;
 using System.Net;
 using System.Net.Http;
 using System.Threading.Tasks;
+using MediaBrowser.Model.Configuration;
 using MediaBrowser.Model.DTO;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Weather;
@@ -568,7 +569,20 @@ namespace MediaBrowser.ApiInteraction
         /// <summary>
         /// Gets weather information for the default location as set in configuration
         /// </summary>
-        public async Task<WeatherInfo> GetWeatherInfo()
+        public async Task<ServerConfiguration> GetServerConfigurationAsync()
+        {
+            string url = ApiUrl + "/ServerConfiguration";
+
+            using (Stream stream = await GetSerializedStreamAsync(url).ConfigureAwait(false))
+            {
+                return DeserializeFromStream<ServerConfiguration>(stream);
+            }
+        }
+
+        /// <summary>
+        /// Gets weather information for the default location as set in configuration
+        /// </summary>
+        public async Task<WeatherInfo> GetWeatherInfoAsync()
         {
             string url = ApiUrl + "/weather";
 
@@ -581,7 +595,7 @@ namespace MediaBrowser.ApiInteraction
         /// <summary>
         /// Gets weather information for a specific zip code
         /// </summary>
-        public async Task<WeatherInfo> GetWeatherInfo(string zipCode)
+        public async Task<WeatherInfo> GetWeatherInfoAsync(string zipCode)
         {
             string url = ApiUrl + "/weather?zipcode=" + zipCode;
 

+ 1 - 1
MediaBrowser.Common/Configuration/BaseApplicationPaths.cs → MediaBrowser.Common/Kernel/BaseApplicationPaths.cs

@@ -2,7 +2,7 @@
 using System.IO;
 using System.Reflection;
 
-namespace MediaBrowser.Common.Configuration
+namespace MediaBrowser.Common.Kernel
 {
     /// <summary>
     /// Provides a base class to hold common application paths used by both the UI and Server.

+ 5 - 5
MediaBrowser.Common/Kernel/BaseKernel.cs

@@ -6,11 +6,11 @@ using System.IO;
 using System.Linq;
 using System.Reflection;
 using System.Threading.Tasks;
-using MediaBrowser.Common.Configuration;
 using MediaBrowser.Common.Logging;
 using MediaBrowser.Common.Net;
 using MediaBrowser.Common.Plugins;
 using MediaBrowser.Common.Serialization;
+using MediaBrowser.Model.Configuration;
 using MediaBrowser.Model.Progress;
 
 namespace MediaBrowser.Common.Kernel
@@ -93,17 +93,17 @@ namespace MediaBrowser.Common.Kernel
         protected void ReloadComposableParts()
         {
             DisposeComposableParts();
-            
+
             // Gets all plugin assemblies by first reading all bytes of the .dll and calling Assembly.Load against that
             // This will prevent the .dll file from getting locked, and allow us to replace it when needed
             IEnumerable<Assembly> pluginAssemblies = Directory.GetFiles(ApplicationPaths.PluginsPath, "*.dll", SearchOption.AllDirectories).Select(f => Assembly.Load(File.ReadAllBytes((f))));
 
             var catalog = new AggregateCatalog(pluginAssemblies.Select(a => new AssemblyCatalog(a)));
-            
+
             // Include composable parts in the Common assembly 
             // Uncomment this if it's ever needed
             //catalog.Catalogs.Add(new AssemblyCatalog(Assembly.GetExecutingAssembly()));
-            
+
             // Include composable parts in the subclass assembly
             catalog.Catalogs.Add(new AssemblyCatalog(GetType().Assembly));
 
@@ -171,7 +171,7 @@ namespace MediaBrowser.Common.Kernel
                 Configuration = XmlSerializer.DeserializeFromFile<TConfigurationType>(ApplicationPaths.SystemConfigurationFilePath);
             }
 
-            Logger.LoggerInstance.LogSeverity = Configuration.LogSeverity;
+            Logger.LoggerInstance.LogSeverity = Configuration.EnableDebugLevelLogging ? LogSeverity.Debug : LogSeverity.Info;
         }
 
         /// <summary>

+ 1 - 2
MediaBrowser.Common/MediaBrowser.Common.csproj

@@ -74,8 +74,7 @@
     <Reference Include="WindowsBase" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="Configuration\BaseApplicationConfiguration.cs" />
-    <Compile Include="Configuration\BaseApplicationPaths.cs" />
+    <Compile Include="Kernel\BaseApplicationPaths.cs" />
     <Compile Include="Drawing\DrawingUtils.cs" />
     <Compile Include="Net\Handlers\StaticFileHandler.cs" />
     <Compile Include="Net\MimeTypes.cs" />

+ 1 - 4
MediaBrowser.Common/UI/BaseApplication.cs

@@ -1,13 +1,10 @@
 using System;
-using System.IO;
-using System.Threading.Tasks;
+using System.Reflection;
 using System.Windows;
-using System.Windows.Controls;
 using System.Windows.Media.Imaging;
 using MediaBrowser.Common.Kernel;
 using MediaBrowser.Common.Logging;
 using MediaBrowser.Model.Progress;
-using System.Reflection;
 
 namespace MediaBrowser.Common.UI
 {

+ 1 - 1
MediaBrowser.Controller/Kernel.cs

@@ -9,12 +9,12 @@ using System.Text;
 using System.Threading.Tasks;
 using MediaBrowser.Common.Kernel;
 using MediaBrowser.Common.Logging;
-using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Resolvers;
 using MediaBrowser.Controller.Weather;
+using MediaBrowser.Model.Configuration;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Progress;
 

+ 1 - 2
MediaBrowser.Controller/MediaBrowser.Controller.csproj

@@ -58,8 +58,7 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="Configuration\ServerApplicationPaths.cs" />
-    <Compile Include="Configuration\ServerConfiguration.cs" />
+    <Compile Include="ServerApplicationPaths.cs" />
     <Compile Include="Library\ItemResolveEventArgs.cs" />
     <Compile Include="FFMpeg\FFProbe.cs" />
     <Compile Include="FFMpeg\FFProbeResult.cs" />

+ 2 - 2
MediaBrowser.Controller/Configuration/ServerApplicationPaths.cs → MediaBrowser.Controller/ServerApplicationPaths.cs

@@ -1,7 +1,7 @@
 using System.IO;
-using MediaBrowser.Common.Configuration;
+using MediaBrowser.Common.Kernel;
 
-namespace MediaBrowser.Controller.Configuration
+namespace MediaBrowser.Controller
 {
     /// <summary>
     /// Extends BaseApplicationPaths to add paths that are only applicable on the server

+ 3 - 5
MediaBrowser.Common/Configuration/BaseApplicationConfiguration.cs → MediaBrowser.Model/Configuration/BaseApplicationConfiguration.cs

@@ -1,18 +1,16 @@
-using MediaBrowser.Common.Logging;
-
-namespace MediaBrowser.Common.Configuration
+
+namespace MediaBrowser.Model.Configuration
 {
     /// <summary>
     /// Serves as a common base class for the Server and UI application Configurations
     /// </summary>
     public class BaseApplicationConfiguration
     {
-        public LogSeverity LogSeverity { get; set; }
+        public bool EnableDebugLevelLogging { get; set; }
         public int HttpServerPortNumber { get; set; }
 
         public BaseApplicationConfiguration()
         {
-            LogSeverity = LogSeverity.Info;
             HttpServerPortNumber = 8096;
         }
     }

+ 2 - 3
MediaBrowser.Controller/Configuration/ServerConfiguration.cs → MediaBrowser.Model/Configuration/ServerConfiguration.cs

@@ -1,6 +1,5 @@
-using MediaBrowser.Common.Configuration;
-
-namespace MediaBrowser.Controller.Configuration
+
+namespace MediaBrowser.Model.Configuration
 {
     public class ServerConfiguration : BaseApplicationConfiguration
     {

+ 2 - 0
MediaBrowser.Model/MediaBrowser.Model.csproj

@@ -32,6 +32,8 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
+    <Compile Include="Configuration\BaseApplicationConfiguration.cs" />
+    <Compile Include="Configuration\ServerConfiguration.cs" />
     <Compile Include="DTO\AudioInfo.cs" />
     <Compile Include="DTO\DTOBaseItem.cs" />
     <Compile Include="DTO\DTOUser.cs" />