Преглед изворни кода

Add new 'nowebcontent' configuration flag

Mark Monteiro пре 5 година
родитељ
комит
3f4b9e9a81

+ 1 - 0
Emby.Server.Implementations/ConfigurationOptions.cs

@@ -15,6 +15,7 @@ namespace Emby.Server.Implementations
         /// </summary>
         public static Dictionary<string, string> DefaultConfiguration => new Dictionary<string, string>
         {
+            { NoWebContentKey, bool.FalseString },
             { HttpListenerHost.DefaultRedirectKey, "web/index.html" },
             { MusicBrainzAlbumProvider.BaseUrlKey, "https://www.musicbrainz.org" },
             { FfmpegProbeSizeKey, "1G" },

+ 1 - 1
Emby.Server.Implementations/HttpServer/HttpListenerHost.cs

@@ -31,7 +31,7 @@ namespace Emby.Server.Implementations.HttpServer
     public class HttpListenerHost : IHttpServer, IDisposable
     {
         /// <summary>
-        /// The settings key for a setting that specifies the default redirect path
+        /// The key for a setting that specifies the default redirect path
         /// to use for requests where the URL base prefix is invalid or missing.
         /// </summary>
         public const string DefaultRedirectKey = "HttpListenerHost:DefaultRedirectPath";

+ 31 - 0
MediaBrowser.Controller/Extensions/ConfigurationExtensions.cs

@@ -1,3 +1,4 @@
+using System;
 using Microsoft.Extensions.Configuration;
 
 namespace MediaBrowser.Controller.Extensions
@@ -7,6 +8,11 @@ namespace MediaBrowser.Controller.Extensions
     /// </summary>
     public static class ConfigurationExtensions
     {
+        /// <summary>
+        /// The key for a setting that indicates whether the application should host static web content.
+        /// </summary>
+        public const string NoWebContentKey = "nowebcontent";
+
         /// <summary>
         /// The key for the FFmpeg probe size option.
         /// </summary>
@@ -17,6 +23,16 @@ namespace MediaBrowser.Controller.Extensions
         /// </summary>
         public const string FfmpegAnalyzeDurationKey = "FFmpeg:analyzeduration";
 
+        /// <summary>
+        /// Retrieves a config value indicating whether the application should not host
+        /// static web content from the <see cref="IConfiguration"/>.
+        /// </summary>
+        /// <param name="configuration">The configuration to retrieve the value from.</param>
+        /// <returns>The parsed config value.</returns>
+        /// <exception cref="FormatException">The config value is not a valid bool string. See <see cref="bool.Parse(string)"/>.</exception>
+        public static bool IsNoWebContent(this IConfiguration configuration)
+            => configuration.ParseBoolean(NoWebContentKey);
+
         /// <summary>
         /// Retrieves the FFmpeg probe size from the <see cref="IConfiguration" />.
         /// </summary>
@@ -32,5 +48,20 @@ namespace MediaBrowser.Controller.Extensions
         /// <returns>The FFmpeg analyse duration option.</returns>
         public static string GetFFmpegAnalyzeDuration(this IConfiguration configuration)
             => configuration[FfmpegAnalyzeDurationKey];
+
+        /// <summary>
+        /// Convert the specified configuration string value its <see cref="bool"/> equivalent.
+        /// </summary>
+        /// <param name="configuration">The configuration to retrieve and parse the setting from.</param>
+        /// <param name="key">The key to use to retrieve the string value from the configuration.</param>
+        /// <returns>The parsed boolean value.</returns>
+        /// <exception cref="FormatException">The config value is not a valid bool string. See <see cref="bool.Parse(string)"/>.</exception>
+        public static bool ParseBoolean(this IConfiguration configuration, string key)
+        {
+            string configValue = configuration[key];
+            return bool.TryParse(configValue, out bool result) ?
+                result :
+                throw new FormatException($"Invalid value for configuration option '{key}' (expected a boolean): {configValue}");
+        }
     }
 }

+ 1 - 1
MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs

@@ -23,7 +23,7 @@ namespace MediaBrowser.Providers.Music
     public class MusicBrainzAlbumProvider : IRemoteMetadataProvider<MusicAlbum, AlbumInfo>, IHasOrder
     {
         /// <summary>
-        /// The settings key for a setting that specifies the base URL to use for sending requests to MusicBrainz.
+        /// The key for a setting that specifies the base URL to use for sending requests to MusicBrainz.
         /// </summary>
         public const string BaseUrlKey = "MusicBrainz:BaseUrl";