using System; using System.Data; using Jellyfin.Plugin.TubeArchivistMetadata.Utilities; using MediaBrowser.Model.Plugins; using Microsoft.Extensions.Logging; namespace Jellyfin.Plugin.TubeArchivistMetadata.Configuration { /// /// Plugin configuration. /// public class PluginConfiguration : BasePluginConfiguration { private ILogger _logger; private string _tubeArchivistUrl; private string _tubeArchivistApiKey; /// /// Initializes a new instance of the class. /// public PluginConfiguration() { if (Plugin.Instance == null) { throw new DataException("Uninitialized plugin!"); } else { _logger = Plugin.Instance.Logger; } CollectionTitle = string.Empty; _tubeArchivistUrl = string.Empty; _tubeArchivistApiKey = string.Empty; MaxDescriptionLength = 500; } /// /// Gets or sets TubeArchivist collection display name. /// public string CollectionTitle { get; set; } /// /// Gets or sets TubeArchivist URL. /// public string TubeArchivistUrl { get { return _tubeArchivistUrl; } set { if (value.StartsWith("http://", StringComparison.CurrentCulture) || value.StartsWith("https://", StringComparison.CurrentCulture)) { _tubeArchivistUrl = Utils.SanitizeUrl(value); } else { _logger.LogInformation("{Message}", "Given TubeArchivist URL contains no schema. Adding http://..."); _tubeArchivistUrl = Utils.SanitizeUrl("http://" + value); } Plugin.Instance?.LogTAApiConnectionStatus(); } } /// /// Gets or sets TubeArchivist API key. /// public string TubeArchivistApiKey { get { return _tubeArchivistApiKey; } set { _tubeArchivistApiKey = value; Plugin.Instance?.LogTAApiConnectionStatus(); } } /// /// Gets or sets maximum series and episodes overviews length. /// public int MaxDescriptionLength { get; set; } } }