فهرست منبع

Removed maxAbi

Greenback 4 سال پیش
والد
کامیت
486148dd6b

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

@@ -286,7 +286,6 @@ namespace Emby.Server.Implementations
                 this,
                 ServerConfigurationManager.Configuration,
                 ApplicationPaths.PluginsPath,
-                ApplicationPaths.CachePath,
                 ApplicationVersion);
         }
 

+ 2 - 9
Emby.Server.Implementations/Plugins/PluginManager.cs

@@ -39,17 +39,15 @@ namespace Emby.Server.Implementations.Plugins
         /// <param name="appHost">The <see cref="IApplicationHost"/>.</param>
         /// <param name="config">The <see cref="ServerConfiguration"/>.</param>
         /// <param name="pluginsPath">The plugin path.</param>
-        /// <param name="imagesPath">The image cache path.</param>
         /// <param name="appVersion">The application version.</param>
         public PluginManager(
             ILogger<PluginManager> logger,
             IApplicationHost appHost,
             ServerConfiguration config,
             string pluginsPath,
-            string imagesPath,
             Version appVersion)
         {
-            _logger = _logger ?? throw new ArgumentNullException(nameof(logger));
+            _logger = logger ?? throw new ArgumentNullException(nameof(logger));
             _pluginsPath = pluginsPath;
             _appVersion = appVersion ?? throw new ArgumentNullException(nameof(appVersion));
             _jsonOptions = JsonDefaults.GetOptions();
@@ -509,17 +507,12 @@ namespace Emby.Server.Implementations.Plugins
                         targetAbi = _minimumVersion;
                     }
 
-                    if (!Version.TryParse(manifest.MaxAbi, out var maxAbi))
-                    {
-                        maxAbi = _appVersion;
-                    }
-
                     if (!Version.TryParse(manifest.Version, out version))
                     {
                         manifest.Version = _minimumVersion.ToString();
                     }
 
-                    return new LocalPlugin(dir, _appVersion >= targetAbi && _appVersion <= maxAbi, manifest);
+                    return new LocalPlugin(dir, _appVersion >= targetAbi, manifest);
                 }
 
                 // No metafile, so lets see if the folder is versioned.

+ 4 - 14
Emby.Server.Implementations/Updates/InstallationManager.cs

@@ -132,13 +132,8 @@ namespace Emby.Server.Implementations.Updates
                             targetAbi = minimumVersion;
                         }
 
-                        if (!Version.TryParse(ver.MaxAbi, out var maxAbi))
-                        {
-                            maxAbi = _applicationHost.ApplicationVersion;
-                        }
-
                         // Only show plugins that fall between targetAbi and maxAbi
-                        if (_applicationHost.ApplicationVersion >= targetAbi && _applicationHost.ApplicationVersion <= maxAbi)
+                        if (_applicationHost.ApplicationVersion >= targetAbi)
                         {
                             continue;
                         }
@@ -200,19 +195,15 @@ namespace Emby.Server.Implementations.Updates
                             // Update the manifests, if anything changes.
                             if (plugin != null)
                             {
-                                bool noChange = string.Equals(plugin.Manifest.MaxAbi, version.MaxAbi, StringComparison.Ordinal)
-                                    || string.Equals(plugin.Manifest.TargetAbi, version.TargetAbi, StringComparison.Ordinal);
-                                if (!noChange)
+                                if (!string.Equals(plugin.Manifest.TargetAbi, version.TargetAbi, StringComparison.Ordinal))
                                 {
-                                    plugin.Manifest.MaxAbi = version.MaxAbi ?? string.Empty;
                                     plugin.Manifest.TargetAbi = version.TargetAbi ?? string.Empty;
                                     _pluginManager.SaveManifest(plugin.Manifest, plugin.Path);
                                 }
                             }
 
                             // Remove versions with a target abi that is greater then the current application version.
-                            if ((Version.TryParse(version.TargetAbi, out var targetAbi) && _applicationHost.ApplicationVersion < targetAbi)
-                                || (Version.TryParse(version.MaxAbi, out var maxAbi) && _applicationHost.ApplicationVersion > maxAbi))
+                            if (Version.TryParse(version.TargetAbi, out var targetAbi) && _applicationHost.ApplicationVersion < targetAbi)
                             {
                                 package.Versions.RemoveAt(i);
                             }
@@ -283,8 +274,7 @@ namespace Emby.Server.Implementations.Updates
 
             var appVer = _applicationHost.ApplicationVersion;
             var availableVersions = package.Versions
-                .Where(x => (string.IsNullOrEmpty(x.TargetAbi) || Version.Parse(x.TargetAbi) <= appVer)
-                    && (string.IsNullOrEmpty(x.MaxAbi) || Version.Parse(x.MaxAbi) >= appVer));
+                .Where(x => string.IsNullOrEmpty(x.TargetAbi) || Version.Parse(x.TargetAbi) <= appVer);
 
             if (specificVersion != null)
             {

+ 0 - 210
MediaBrowser.Common/Plugins/BasePlugin.cs

@@ -1,5 +1,3 @@
-#pragma warning disable SA1402
-
 using System;
 using System.IO;
 using System.Reflection;
@@ -94,212 +92,4 @@ namespace MediaBrowser.Common.Plugins
             Id = assemblyId;
         }
     }
-
-    /// <summary>
-    /// Provides a common base class for all plugins.
-    /// </summary>
-    /// <typeparam name="TConfigurationType">The type of the T configuration type.</typeparam>
-    public abstract class BasePlugin<TConfigurationType> : BasePlugin, IHasPluginConfiguration
-        where TConfigurationType : BasePluginConfiguration
-    {
-        /// <summary>
-        /// The configuration sync lock.
-        /// </summary>
-        private readonly object _configurationSyncLock = new object();
-
-        /// <summary>
-        /// The configuration save lock.
-        /// </summary>
-        private readonly object _configurationSaveLock = new object();
-
-        private Action<string> _directoryCreateFn;
-
-        /// <summary>
-        /// The configuration.
-        /// </summary>
-        private TConfigurationType _configuration;
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="BasePlugin{TConfigurationType}" /> class.
-        /// </summary>
-        /// <param name="applicationPaths">The application paths.</param>
-        /// <param name="xmlSerializer">The XML serializer.</param>
-        protected BasePlugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer)
-        {
-            ApplicationPaths = applicationPaths;
-            XmlSerializer = xmlSerializer;
-            if (this is IPluginAssembly assemblyPlugin)
-            {
-                var assembly = GetType().Assembly;
-                var assemblyName = assembly.GetName();
-                var assemblyFilePath = assembly.Location;
-
-                var dataFolderPath = Path.Combine(ApplicationPaths.PluginsPath, Path.GetFileNameWithoutExtension(assemblyFilePath));
-                if (!Directory.Exists(dataFolderPath))
-                {
-                    // Try again with the version number appended to the folder name.
-                    dataFolderPath = dataFolderPath + "_" + Version.ToString();
-                }
-
-                assemblyPlugin.SetAttributes(assemblyFilePath, dataFolderPath, assemblyName.Version);
-
-                var idAttributes = assembly.GetCustomAttributes(typeof(GuidAttribute), true);
-                if (idAttributes.Length > 0)
-                {
-                    var attribute = (GuidAttribute)idAttributes[0];
-                    var assemblyId = new Guid(attribute.Value);
-
-                    assemblyPlugin.SetId(assemblyId);
-                }
-            }
-
-            if (this is IHasPluginConfiguration hasPluginConfiguration)
-            {
-                hasPluginConfiguration.SetStartupInfo(s => Directory.CreateDirectory(s));
-            }
-        }
-
-        /// <summary>
-        /// Gets the application paths.
-        /// </summary>
-        /// <value>The application paths.</value>
-        protected IApplicationPaths ApplicationPaths { get; private set; }
-
-        /// <summary>
-        /// Gets the XML serializer.
-        /// </summary>
-        /// <value>The XML serializer.</value>
-        protected IXmlSerializer XmlSerializer { get; private set; }
-
-        /// <summary>
-        /// Gets the type of configuration this plugin uses.
-        /// </summary>
-        /// <value>The type of the configuration.</value>
-        public Type ConfigurationType => typeof(TConfigurationType);
-
-        /// <summary>
-        /// Gets or sets the event handler that is triggered when this configuration changes.
-        /// </summary>
-        public EventHandler<BasePluginConfiguration> ConfigurationChanged { get; set; }
-
-        /// <summary>
-        /// Gets the name the assembly file.
-        /// </summary>
-        /// <value>The name of the assembly file.</value>
-        protected string AssemblyFileName => Path.GetFileName(AssemblyFilePath);
-
-        /// <summary>
-        /// Gets or sets the plugin configuration.
-        /// </summary>
-        /// <value>The configuration.</value>
-        public TConfigurationType Configuration
-        {
-            get
-            {
-                // Lazy load
-                if (_configuration == null)
-                {
-                    lock (_configurationSyncLock)
-                    {
-                        if (_configuration == null)
-                        {
-                            _configuration = LoadConfiguration();
-                        }
-                    }
-                }
-
-                return _configuration;
-            }
-
-            protected set => _configuration = value;
-        }
-
-        /// <summary>
-        /// Gets the name of the configuration file. Subclasses should override.
-        /// </summary>
-        /// <value>The name of the configuration file.</value>
-        public virtual string ConfigurationFileName => Path.ChangeExtension(AssemblyFileName, ".xml");
-
-        /// <summary>
-        /// Gets the full path to the configuration file.
-        /// </summary>
-        /// <value>The configuration file path.</value>
-        public string ConfigurationFilePath { get; }
-
-        /// <summary>
-        /// Gets the plugin configuration.
-        /// </summary>
-        /// <value>The configuration.</value>
-        BasePluginConfiguration IHasPluginConfiguration.Configuration => Configuration;
-
-        /// <inheritdoc />
-        public void SetStartupInfo(Action<string> directoryCreateFn)
-        {
-            // hack alert, until the .net core transition is complete
-            _directoryCreateFn = directoryCreateFn;
-        }
-
-        private TConfigurationType LoadConfiguration()
-        {
-            var path = ConfigurationFilePath;
-
-            try
-            {
-                return (TConfigurationType)XmlSerializer.DeserializeFromFile(typeof(TConfigurationType), path);
-            }
-            catch
-            {
-                var config = (TConfigurationType)Activator.CreateInstance(typeof(TConfigurationType));
-                SaveConfiguration(config);
-                return config;
-            }
-        }
-
-        /// <summary>
-        /// Saves the current configuration to the file system.
-        /// </summary>
-        /// <param name="config">Configuration to save.</param>
-        public virtual void SaveConfiguration(TConfigurationType config)
-        {
-            lock (_configurationSaveLock)
-            {
-                _directoryCreateFn(Path.GetDirectoryName(ConfigurationFilePath));
-
-                XmlSerializer.SerializeToFile(config, ConfigurationFilePath);
-            }
-        }
-
-        /// <summary>
-        /// Saves the current configuration to the file system.
-        /// </summary>
-        public virtual void SaveConfiguration()
-        {
-            SaveConfiguration(Configuration);
-        }
-
-        /// <inheritdoc />
-        public virtual void UpdateConfiguration(BasePluginConfiguration configuration)
-        {
-            if (configuration == null)
-            {
-                throw new ArgumentNullException(nameof(configuration));
-            }
-
-            Configuration = (TConfigurationType)configuration;
-
-            SaveConfiguration(Configuration);
-
-            ConfigurationChanged?.Invoke(this, configuration);
-        }
-
-        /// <inheritdoc />
-        public override PluginInfo GetPluginInfo()
-        {
-            var info = base.GetPluginInfo();
-
-            info.ConfigurationFileName = ConfigurationFileName;
-
-            return info;
-        }
-    }
 }

+ 218 - 0
MediaBrowser.Common/Plugins/BasePluginOfT.cs

@@ -0,0 +1,218 @@
+#pragma warning disable SA1649 // File name should match first type name
+using System;
+using System.IO;
+using System.Runtime.InteropServices;
+using MediaBrowser.Common.Configuration;
+using MediaBrowser.Model.Plugins;
+using MediaBrowser.Model.Serialization;
+
+namespace MediaBrowser.Common.Plugins
+{
+    /// <summary>
+    /// Provides a common base class for all plugins.
+    /// </summary>
+    /// <typeparam name="TConfigurationType">The type of the T configuration type.</typeparam>
+    public abstract class BasePlugin<TConfigurationType> : BasePlugin, IHasPluginConfiguration
+        where TConfigurationType : BasePluginConfiguration
+    {
+        /// <summary>
+        /// The configuration sync lock.
+        /// </summary>
+        private readonly object _configurationSyncLock = new object();
+
+        /// <summary>
+        /// The configuration save lock.
+        /// </summary>
+        private readonly object _configurationSaveLock = new object();
+
+        private Action<string> _directoryCreateFn;
+
+        /// <summary>
+        /// The configuration.
+        /// </summary>
+        private TConfigurationType _configuration;
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="BasePlugin{TConfigurationType}" /> class.
+        /// </summary>
+        /// <param name="applicationPaths">The application paths.</param>
+        /// <param name="xmlSerializer">The XML serializer.</param>
+        protected BasePlugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer)
+        {
+            ApplicationPaths = applicationPaths;
+            XmlSerializer = xmlSerializer;
+            if (this is IPluginAssembly assemblyPlugin)
+            {
+                var assembly = GetType().Assembly;
+                var assemblyName = assembly.GetName();
+                var assemblyFilePath = assembly.Location;
+
+                var dataFolderPath = Path.Combine(ApplicationPaths.PluginsPath, Path.GetFileNameWithoutExtension(assemblyFilePath));
+                if (!Directory.Exists(dataFolderPath))
+                {
+                    // Try again with the version number appended to the folder name.
+                    dataFolderPath = dataFolderPath + "_" + Version.ToString();
+                }
+
+                assemblyPlugin.SetAttributes(assemblyFilePath, dataFolderPath, assemblyName.Version);
+
+                var idAttributes = assembly.GetCustomAttributes(typeof(GuidAttribute), true);
+                if (idAttributes.Length > 0)
+                {
+                    var attribute = (GuidAttribute)idAttributes[0];
+                    var assemblyId = new Guid(attribute.Value);
+
+                    assemblyPlugin.SetId(assemblyId);
+                }
+            }
+
+            if (this is IHasPluginConfiguration hasPluginConfiguration)
+            {
+                hasPluginConfiguration.SetStartupInfo(s => Directory.CreateDirectory(s));
+            }
+        }
+
+        /// <summary>
+        /// Gets the application paths.
+        /// </summary>
+        /// <value>The application paths.</value>
+        protected IApplicationPaths ApplicationPaths { get; private set; }
+
+        /// <summary>
+        /// Gets the XML serializer.
+        /// </summary>
+        /// <value>The XML serializer.</value>
+        protected IXmlSerializer XmlSerializer { get; private set; }
+
+        /// <summary>
+        /// Gets the type of configuration this plugin uses.
+        /// </summary>
+        /// <value>The type of the configuration.</value>
+        public Type ConfigurationType => typeof(TConfigurationType);
+
+        /// <summary>
+        /// Gets or sets the event handler that is triggered when this configuration changes.
+        /// </summary>
+        public EventHandler<BasePluginConfiguration> ConfigurationChanged { get; set; }
+
+        /// <summary>
+        /// Gets the name the assembly file.
+        /// </summary>
+        /// <value>The name of the assembly file.</value>
+        protected string AssemblyFileName => Path.GetFileName(AssemblyFilePath);
+
+        /// <summary>
+        /// Gets or sets the plugin configuration.
+        /// </summary>
+        /// <value>The configuration.</value>
+        public TConfigurationType Configuration
+        {
+            get
+            {
+                // Lazy load
+                if (_configuration == null)
+                {
+                    lock (_configurationSyncLock)
+                    {
+                        if (_configuration == null)
+                        {
+                            _configuration = LoadConfiguration();
+                        }
+                    }
+                }
+
+                return _configuration;
+            }
+
+            protected set => _configuration = value;
+        }
+
+        /// <summary>
+        /// Gets the name of the configuration file. Subclasses should override.
+        /// </summary>
+        /// <value>The name of the configuration file.</value>
+        public virtual string ConfigurationFileName => Path.ChangeExtension(AssemblyFileName, ".xml");
+
+        /// <summary>
+        /// Gets the full path to the configuration file.
+        /// </summary>
+        /// <value>The configuration file path.</value>
+        public string ConfigurationFilePath { get; }
+
+        /// <summary>
+        /// Gets the plugin configuration.
+        /// </summary>
+        /// <value>The configuration.</value>
+        BasePluginConfiguration IHasPluginConfiguration.Configuration => Configuration;
+
+        /// <inheritdoc />
+        public void SetStartupInfo(Action<string> directoryCreateFn)
+        {
+            // hack alert, until the .net core transition is complete
+            _directoryCreateFn = directoryCreateFn;
+        }
+
+        /// <summary>
+        /// Saves the current configuration to the file system.
+        /// </summary>
+        /// <param name="config">Configuration to save.</param>
+        public virtual void SaveConfiguration(TConfigurationType config)
+        {
+            lock (_configurationSaveLock)
+            {
+                _directoryCreateFn(Path.GetDirectoryName(ConfigurationFilePath));
+
+                XmlSerializer.SerializeToFile(config, ConfigurationFilePath);
+            }
+        }
+
+        /// <summary>
+        /// Saves the current configuration to the file system.
+        /// </summary>
+        public virtual void SaveConfiguration()
+        {
+            SaveConfiguration(Configuration);
+        }
+
+        /// <inheritdoc />
+        public virtual void UpdateConfiguration(BasePluginConfiguration configuration)
+        {
+            if (configuration == null)
+            {
+                throw new ArgumentNullException(nameof(configuration));
+            }
+
+            Configuration = (TConfigurationType)configuration;
+
+            SaveConfiguration(Configuration);
+
+            ConfigurationChanged?.Invoke(this, configuration);
+        }
+
+        /// <inheritdoc />
+        public override PluginInfo GetPluginInfo()
+        {
+            var info = base.GetPluginInfo();
+
+            info.ConfigurationFileName = ConfigurationFileName;
+
+            return info;
+        }
+
+        private TConfigurationType LoadConfiguration()
+        {
+            var path = ConfigurationFilePath;
+
+            try
+            {
+                return (TConfigurationType)XmlSerializer.DeserializeFromFile(typeof(TConfigurationType), path);
+            }
+            catch
+            {
+                var config = (TConfigurationType)Activator.CreateInstance(typeof(TConfigurationType));
+                SaveConfiguration(config);
+                return config;
+            }
+        }
+    }
+}

+ 0 - 7
MediaBrowser.Model/Updates/VersionInfo.cs

@@ -43,13 +43,6 @@ namespace MediaBrowser.Model.Updates
         [JsonPropertyName("targetAbi")]
         public string? TargetAbi { get; set; }
 
-        /// <summary>
-        /// Gets or sets the maximum ABI that this version will work with.
-        /// </summary>
-        /// <value>The target ABI version.</value>
-        [JsonPropertyName("maxAbi")]
-        public string? MaxAbi { get; set; }
-
         /// <summary>
         /// Gets or sets the source URL.
         /// </summary>