aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Extensions/ConfigurationExtensions.cs
diff options
context:
space:
mode:
authorMark Monteiro <marknr.monteiro@protonmail.com>2020-02-28 20:40:45 +0100
committerMark Monteiro <marknr.monteiro@protonmail.com>2020-02-28 20:40:45 +0100
commit3f4b9e9a81278c6f5c817036a7ae52b6f70557e4 (patch)
tree874dc3c75f66b121b6b58abdba0ba4e63305d12d /MediaBrowser.Controller/Extensions/ConfigurationExtensions.cs
parent3043b7323b1a12e888ba8c4eb71f904724f43e3a (diff)
Add new 'nowebcontent' configuration flag
Diffstat (limited to 'MediaBrowser.Controller/Extensions/ConfigurationExtensions.cs')
-rw-r--r--MediaBrowser.Controller/Extensions/ConfigurationExtensions.cs31
1 files changed, 31 insertions, 0 deletions
diff --git a/MediaBrowser.Controller/Extensions/ConfigurationExtensions.cs b/MediaBrowser.Controller/Extensions/ConfigurationExtensions.cs
index 76c9b4b26..9dbc1a243 100644
--- a/MediaBrowser.Controller/Extensions/ConfigurationExtensions.cs
+++ b/MediaBrowser.Controller/Extensions/ConfigurationExtensions.cs
@@ -1,3 +1,4 @@
+using System;
using Microsoft.Extensions.Configuration;
namespace MediaBrowser.Controller.Extensions
@@ -8,6 +9,11 @@ namespace MediaBrowser.Controller.Extensions
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>
public const string FfmpegProbeSizeKey = "FFmpeg:probesize";
@@ -18,6 +24,16 @@ namespace MediaBrowser.Controller.Extensions
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>
/// <param name="configuration">This configuration.</param>
@@ -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}");
+ }
}
}