From e52833059bc819cbdb41ba204b82aee1760ddb3a Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Sun, 2 Sep 2012 09:45:02 -0400 Subject: [PATCH] Moved server configuration to the model so that the UI can read it --- .../HttpHandlers/ServerConfigurationHandler.cs | 15 +++++++++++++++ MediaBrowser.Api/MediaBrowser.Api.csproj | 1 + MediaBrowser.Api/Plugin.cs | 4 ++++ MediaBrowser.ApiInteraction/ApiClient.cs | 18 ++++++++++++++++-- .../BaseApplicationPaths.cs | 2 +- MediaBrowser.Common/Kernel/BaseKernel.cs | 10 +++++----- MediaBrowser.Common/MediaBrowser.Common.csproj | 3 +-- MediaBrowser.Common/UI/BaseApplication.cs | 5 +---- MediaBrowser.Controller/Kernel.cs | 2 +- .../MediaBrowser.Controller.csproj | 3 +-- .../ServerApplicationPaths.cs | 4 ++-- .../BaseApplicationConfiguration.cs | 8 +++----- .../Configuration/ServerConfiguration.cs | 5 ++--- MediaBrowser.Model/MediaBrowser.Model.csproj | 2 ++ 14 files changed, 55 insertions(+), 27 deletions(-) create mode 100644 MediaBrowser.Api/HttpHandlers/ServerConfigurationHandler.cs rename MediaBrowser.Common/{Configuration => Kernel}/BaseApplicationPaths.cs (95%) rename MediaBrowser.Controller/{Configuration => }/ServerApplicationPaths.cs (95%) rename {MediaBrowser.Common => MediaBrowser.Model}/Configuration/BaseApplicationConfiguration.cs (63%) rename {MediaBrowser.Controller => MediaBrowser.Model}/Configuration/ServerConfiguration.cs (65%) diff --git a/MediaBrowser.Api/HttpHandlers/ServerConfigurationHandler.cs b/MediaBrowser.Api/HttpHandlers/ServerConfigurationHandler.cs new file mode 100644 index 0000000000..175876b4ca --- /dev/null +++ b/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 + { + protected override Task GetObjectToSerialize() + { + return Task.FromResult(Kernel.Instance.Configuration); + } + } +} diff --git a/MediaBrowser.Api/MediaBrowser.Api.csproj b/MediaBrowser.Api/MediaBrowser.Api.csproj index 5d32210938..89bb5adc91 100644 --- a/MediaBrowser.Api/MediaBrowser.Api.csproj +++ b/MediaBrowser.Api/MediaBrowser.Api.csproj @@ -65,6 +65,7 @@ + diff --git a/MediaBrowser.Api/Plugin.cs b/MediaBrowser.Api/Plugin.cs index 467b30ef15..f13b9efb33 100644 --- a/MediaBrowser.Api/Plugin.cs +++ b/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; } diff --git a/MediaBrowser.ApiInteraction/ApiClient.cs b/MediaBrowser.ApiInteraction/ApiClient.cs index 99af250ca8..922b4bb0c9 100644 --- a/MediaBrowser.ApiInteraction/ApiClient.cs +++ b/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 /// /// Gets weather information for the default location as set in configuration /// - public async Task GetWeatherInfo() + public async Task GetServerConfigurationAsync() + { + string url = ApiUrl + "/ServerConfiguration"; + + using (Stream stream = await GetSerializedStreamAsync(url).ConfigureAwait(false)) + { + return DeserializeFromStream(stream); + } + } + + /// + /// Gets weather information for the default location as set in configuration + /// + public async Task GetWeatherInfoAsync() { string url = ApiUrl + "/weather"; @@ -581,7 +595,7 @@ namespace MediaBrowser.ApiInteraction /// /// Gets weather information for a specific zip code /// - public async Task GetWeatherInfo(string zipCode) + public async Task GetWeatherInfoAsync(string zipCode) { string url = ApiUrl + "/weather?zipcode=" + zipCode; diff --git a/MediaBrowser.Common/Configuration/BaseApplicationPaths.cs b/MediaBrowser.Common/Kernel/BaseApplicationPaths.cs similarity index 95% rename from MediaBrowser.Common/Configuration/BaseApplicationPaths.cs rename to MediaBrowser.Common/Kernel/BaseApplicationPaths.cs index d030da844c..3c394680f6 100644 --- a/MediaBrowser.Common/Configuration/BaseApplicationPaths.cs +++ b/MediaBrowser.Common/Kernel/BaseApplicationPaths.cs @@ -2,7 +2,7 @@ using System.IO; using System.Reflection; -namespace MediaBrowser.Common.Configuration +namespace MediaBrowser.Common.Kernel { /// /// Provides a base class to hold common application paths used by both the UI and Server. diff --git a/MediaBrowser.Common/Kernel/BaseKernel.cs b/MediaBrowser.Common/Kernel/BaseKernel.cs index 5ba68cf4eb..44569cbadf 100644 --- a/MediaBrowser.Common/Kernel/BaseKernel.cs +++ b/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 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(ApplicationPaths.SystemConfigurationFilePath); } - Logger.LoggerInstance.LogSeverity = Configuration.LogSeverity; + Logger.LoggerInstance.LogSeverity = Configuration.EnableDebugLevelLogging ? LogSeverity.Debug : LogSeverity.Info; } /// diff --git a/MediaBrowser.Common/MediaBrowser.Common.csproj b/MediaBrowser.Common/MediaBrowser.Common.csproj index d80303d1f8..841eccf736 100644 --- a/MediaBrowser.Common/MediaBrowser.Common.csproj +++ b/MediaBrowser.Common/MediaBrowser.Common.csproj @@ -74,8 +74,7 @@ - - + diff --git a/MediaBrowser.Common/UI/BaseApplication.cs b/MediaBrowser.Common/UI/BaseApplication.cs index fb771f1e3c..2112be6792 100644 --- a/MediaBrowser.Common/UI/BaseApplication.cs +++ b/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 { diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs index 1a161ccc98..32f4a58285 100644 --- a/MediaBrowser.Controller/Kernel.cs +++ b/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; diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index f72202fea8..1547deea21 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -58,8 +58,7 @@ - - + diff --git a/MediaBrowser.Controller/Configuration/ServerApplicationPaths.cs b/MediaBrowser.Controller/ServerApplicationPaths.cs similarity index 95% rename from MediaBrowser.Controller/Configuration/ServerApplicationPaths.cs rename to MediaBrowser.Controller/ServerApplicationPaths.cs index 92283ab25f..0f4932fd04 100644 --- a/MediaBrowser.Controller/Configuration/ServerApplicationPaths.cs +++ b/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 { /// /// Extends BaseApplicationPaths to add paths that are only applicable on the server diff --git a/MediaBrowser.Common/Configuration/BaseApplicationConfiguration.cs b/MediaBrowser.Model/Configuration/BaseApplicationConfiguration.cs similarity index 63% rename from MediaBrowser.Common/Configuration/BaseApplicationConfiguration.cs rename to MediaBrowser.Model/Configuration/BaseApplicationConfiguration.cs index 7ed782bdb1..17be9eaef6 100644 --- a/MediaBrowser.Common/Configuration/BaseApplicationConfiguration.cs +++ b/MediaBrowser.Model/Configuration/BaseApplicationConfiguration.cs @@ -1,18 +1,16 @@ -using MediaBrowser.Common.Logging; - -namespace MediaBrowser.Common.Configuration + +namespace MediaBrowser.Model.Configuration { /// /// Serves as a common base class for the Server and UI application Configurations /// 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; } } diff --git a/MediaBrowser.Controller/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs similarity index 65% rename from MediaBrowser.Controller/Configuration/ServerConfiguration.cs rename to MediaBrowser.Model/Configuration/ServerConfiguration.cs index 368c8ef371..97b88a5d9b 100644 --- a/MediaBrowser.Controller/Configuration/ServerConfiguration.cs +++ b/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 { diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index dabc6864ca..b91e7ea173 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -32,6 +32,8 @@ 4 + +