Bläddra i källkod

pass current server version into installation manager to get update list

Luke Pulverenti 11 år sedan
förälder
incheckning
1c7c71075a

+ 2 - 2
MediaBrowser.Api/PackageService.cs

@@ -132,7 +132,7 @@ namespace MediaBrowser.Api
 
 
             if (request.PackageType == PackageType.UserInstalled || request.PackageType == PackageType.All)
             if (request.PackageType == PackageType.UserInstalled || request.PackageType == PackageType.All)
             {
             {
-                result.AddRange(_installationManager.GetAvailablePluginUpdates(false, CancellationToken.None).Result.ToList());
+                result.AddRange(_installationManager.GetAvailablePluginUpdates(_appHost.ApplicationVersion, false, CancellationToken.None).Result.ToList());
             }
             }
 
 
             else if (request.PackageType == PackageType.System || request.PackageType == PackageType.All)
             else if (request.PackageType == PackageType.System || request.PackageType == PackageType.All)
@@ -194,7 +194,7 @@ namespace MediaBrowser.Api
         public void Post(InstallPackage request)
         public void Post(InstallPackage request)
         {
         {
             var package = string.IsNullOrEmpty(request.Version) ?
             var package = string.IsNullOrEmpty(request.Version) ?
-                _installationManager.GetLatestCompatibleVersion(request.Name, request.UpdateClass).Result :
+                _installationManager.GetLatestCompatibleVersion(request.Name, _appHost.ApplicationVersion, request.UpdateClass).Result :
                 _installationManager.GetPackage(request.Name, request.UpdateClass, Version.Parse(request.Version)).Result;
                 _installationManager.GetPackage(request.Name, request.UpdateClass, Version.Parse(request.Version)).Result;
 
 
             if (package == null)
             if (package == null)

+ 12 - 13
MediaBrowser.Common.Implementations/Updates/InstallationManager.cs

@@ -225,9 +225,9 @@ namespace MediaBrowser.Common.Implementations.Updates
         /// Determines whether [is package version up to date] [the specified package version info].
         /// Determines whether [is package version up to date] [the specified package version info].
         /// </summary>
         /// </summary>
         /// <param name="packageVersionInfo">The package version info.</param>
         /// <param name="packageVersionInfo">The package version info.</param>
-        /// <param name="applicationVersion">The application version.</param>
+        /// <param name="currentServerVersion">The current server version.</param>
         /// <returns><c>true</c> if [is package version up to date] [the specified package version info]; otherwise, <c>false</c>.</returns>
         /// <returns><c>true</c> if [is package version up to date] [the specified package version info]; otherwise, <c>false</c>.</returns>
-        private bool IsPackageVersionUpToDate(PackageVersionInfo packageVersionInfo, Version applicationVersion)
+        private bool IsPackageVersionUpToDate(PackageVersionInfo packageVersionInfo, Version currentServerVersion)
         {
         {
             if (string.IsNullOrEmpty(packageVersionInfo.requiredVersionStr))
             if (string.IsNullOrEmpty(packageVersionInfo.requiredVersionStr))
             {
             {
@@ -236,7 +236,7 @@ namespace MediaBrowser.Common.Implementations.Updates
 
 
             Version requiredVersion;
             Version requiredVersion;
 
 
-            return Version.TryParse(packageVersionInfo.requiredVersionStr, out requiredVersion) && applicationVersion >= requiredVersion;
+            return Version.TryParse(packageVersionInfo.requiredVersionStr, out requiredVersion) && currentServerVersion >= requiredVersion;
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -264,13 +264,14 @@ namespace MediaBrowser.Common.Implementations.Updates
         /// Gets the latest compatible version.
         /// Gets the latest compatible version.
         /// </summary>
         /// </summary>
         /// <param name="name">The name.</param>
         /// <param name="name">The name.</param>
+        /// <param name="currentServerVersion">The current server version.</param>
         /// <param name="classification">The classification.</param>
         /// <param name="classification">The classification.</param>
         /// <returns>Task{PackageVersionInfo}.</returns>
         /// <returns>Task{PackageVersionInfo}.</returns>
-        public async Task<PackageVersionInfo> GetLatestCompatibleVersion(string name, PackageVersionClass classification = PackageVersionClass.Release)
+        public async Task<PackageVersionInfo> GetLatestCompatibleVersion(string name, Version currentServerVersion, PackageVersionClass classification = PackageVersionClass.Release)
         {
         {
             var packages = await GetAvailablePackages(CancellationToken.None).ConfigureAwait(false);
             var packages = await GetAvailablePackages(CancellationToken.None).ConfigureAwait(false);
 
 
-            return GetLatestCompatibleVersion(packages, name, classification);
+            return GetLatestCompatibleVersion(packages, name, currentServerVersion, classification);
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -278,9 +279,10 @@ namespace MediaBrowser.Common.Implementations.Updates
         /// </summary>
         /// </summary>
         /// <param name="availablePackages">The available packages.</param>
         /// <param name="availablePackages">The available packages.</param>
         /// <param name="name">The name.</param>
         /// <param name="name">The name.</param>
+        /// <param name="currentServerVersion">The current server version.</param>
         /// <param name="classification">The classification.</param>
         /// <param name="classification">The classification.</param>
         /// <returns>PackageVersionInfo.</returns>
         /// <returns>PackageVersionInfo.</returns>
-        public PackageVersionInfo GetLatestCompatibleVersion(IEnumerable<PackageInfo> availablePackages, string name, PackageVersionClass classification = PackageVersionClass.Release)
+        public PackageVersionInfo GetLatestCompatibleVersion(IEnumerable<PackageInfo> availablePackages, string name, Version currentServerVersion, PackageVersionClass classification = PackageVersionClass.Release)
         {
         {
             var package = availablePackages.FirstOrDefault(p => p.name.Equals(name, StringComparison.OrdinalIgnoreCase));
             var package = availablePackages.FirstOrDefault(p => p.name.Equals(name, StringComparison.OrdinalIgnoreCase));
 
 
@@ -291,23 +293,20 @@ namespace MediaBrowser.Common.Implementations.Updates
 
 
             return package.versions
             return package.versions
                 .OrderByDescending(v => v.version)
                 .OrderByDescending(v => v.version)
-                .FirstOrDefault(v => v.classification <= classification && IsPackageVersionUpToDate(v, _applicationHost.ApplicationVersion));
+                .FirstOrDefault(v => v.classification <= classification && IsPackageVersionUpToDate(v, currentServerVersion));
         }
         }
 
 
         /// <summary>
         /// <summary>
         /// Gets the available plugin updates.
         /// Gets the available plugin updates.
         /// </summary>
         /// </summary>
+        /// <param name="currentServerVersion">The current server version.</param>
         /// <param name="withAutoUpdateEnabled">if set to <c>true</c> [with auto update enabled].</param>
         /// <param name="withAutoUpdateEnabled">if set to <c>true</c> [with auto update enabled].</param>
         /// <param name="cancellationToken">The cancellation token.</param>
         /// <param name="cancellationToken">The cancellation token.</param>
         /// <returns>Task{IEnumerable{PackageVersionInfo}}.</returns>
         /// <returns>Task{IEnumerable{PackageVersionInfo}}.</returns>
-        public async Task<IEnumerable<PackageVersionInfo>> GetAvailablePluginUpdates(bool withAutoUpdateEnabled, CancellationToken cancellationToken)
+        public async Task<IEnumerable<PackageVersionInfo>> GetAvailablePluginUpdates(Version currentServerVersion, bool withAutoUpdateEnabled, CancellationToken cancellationToken)
         {
         {
             var catalog = await GetAvailablePackagesWithoutRegistrationInfo(cancellationToken).ConfigureAwait(false);
             var catalog = await GetAvailablePackagesWithoutRegistrationInfo(cancellationToken).ConfigureAwait(false);
-            return FilterCatalog(catalog, withAutoUpdateEnabled);
-        }
 
 
-        protected IEnumerable<PackageVersionInfo> FilterCatalog(IEnumerable<PackageInfo> catalog, bool withAutoUpdateEnabled)
-        {
             var plugins = _applicationHost.Plugins.ToList();
             var plugins = _applicationHost.Plugins.ToList();
 
 
             if (withAutoUpdateEnabled)
             if (withAutoUpdateEnabled)
@@ -320,7 +319,7 @@ namespace MediaBrowser.Common.Implementations.Updates
             // Figure out what needs to be installed
             // Figure out what needs to be installed
             var packages = plugins.Select(p =>
             var packages = plugins.Select(p =>
             {
             {
-                var latestPluginInfo = GetLatestCompatibleVersion(catalog, p.Name, p.Configuration.UpdateClass);
+                var latestPluginInfo = GetLatestCompatibleVersion(catalog, p.Name, currentServerVersion, p.Configuration.UpdateClass);
 
 
                 return latestPluginInfo != null && latestPluginInfo.version != null && latestPluginInfo.version > p.Version ? latestPluginInfo : null;
                 return latestPluginInfo != null && latestPluginInfo.version != null && latestPluginInfo.version > p.Version ? latestPluginInfo : null;
 
 

+ 6 - 3
MediaBrowser.Common/Updates/IInstallationManager.cs

@@ -76,26 +76,29 @@ namespace MediaBrowser.Common.Updates
         /// Gets the latest compatible version.
         /// Gets the latest compatible version.
         /// </summary>
         /// </summary>
         /// <param name="name">The name.</param>
         /// <param name="name">The name.</param>
+        /// <param name="currentServerVersion">The current server version.</param>
         /// <param name="classification">The classification.</param>
         /// <param name="classification">The classification.</param>
         /// <returns>Task{PackageVersionInfo}.</returns>
         /// <returns>Task{PackageVersionInfo}.</returns>
-        Task<PackageVersionInfo> GetLatestCompatibleVersion(string name, PackageVersionClass classification = PackageVersionClass.Release);
+        Task<PackageVersionInfo> GetLatestCompatibleVersion(string name, Version currentServerVersion, PackageVersionClass classification = PackageVersionClass.Release);
 
 
         /// <summary>
         /// <summary>
         /// Gets the latest compatible version.
         /// Gets the latest compatible version.
         /// </summary>
         /// </summary>
         /// <param name="availablePackages">The available packages.</param>
         /// <param name="availablePackages">The available packages.</param>
         /// <param name="name">The name.</param>
         /// <param name="name">The name.</param>
+        /// <param name="currentServerVersion">The current server version.</param>
         /// <param name="classification">The classification.</param>
         /// <param name="classification">The classification.</param>
         /// <returns>PackageVersionInfo.</returns>
         /// <returns>PackageVersionInfo.</returns>
-        PackageVersionInfo GetLatestCompatibleVersion(IEnumerable<PackageInfo> availablePackages, string name, PackageVersionClass classification = PackageVersionClass.Release);
+        PackageVersionInfo GetLatestCompatibleVersion(IEnumerable<PackageInfo> availablePackages, string name, Version currentServerVersion, PackageVersionClass classification = PackageVersionClass.Release);
 
 
         /// <summary>
         /// <summary>
         /// Gets the available plugin updates.
         /// Gets the available plugin updates.
         /// </summary>
         /// </summary>
+        /// <param name="currentServerVersion">The current server version.</param>
         /// <param name="withAutoUpdateEnabled">if set to <c>true</c> [with auto update enabled].</param>
         /// <param name="withAutoUpdateEnabled">if set to <c>true</c> [with auto update enabled].</param>
         /// <param name="cancellationToken">The cancellation token.</param>
         /// <param name="cancellationToken">The cancellation token.</param>
         /// <returns>Task{IEnumerable{PackageVersionInfo}}.</returns>
         /// <returns>Task{IEnumerable{PackageVersionInfo}}.</returns>
-        Task<IEnumerable<PackageVersionInfo>> GetAvailablePluginUpdates(bool withAutoUpdateEnabled, CancellationToken cancellationToken);
+        Task<IEnumerable<PackageVersionInfo>> GetAvailablePluginUpdates(Version currentServerVersion, bool withAutoUpdateEnabled, CancellationToken cancellationToken);
 
 
         /// <summary>
         /// <summary>
         /// Installs the package.
         /// Installs the package.

+ 1 - 1
MediaBrowser.Controller/Entities/Folder.cs

@@ -1004,7 +1004,7 @@ namespace MediaBrowser.Controller.Entities
                 throw new ArgumentNullException();
                 throw new ArgumentNullException();
             }
             }
 
 
-            var list = new List<BaseItem>(10000);
+            var list = new List<BaseItem>(_children.Count);
 
 
             AddRecursiveChildrenInternal(user, includeLinkedChildren, list);
             AddRecursiveChildrenInternal(user, includeLinkedChildren, list);
 
 

+ 7 - 8
MediaBrowser.Server.Implementations/ScheduledTasks/PluginUpdateTask.cs

@@ -1,4 +1,5 @@
-using MediaBrowser.Common.ScheduledTasks;
+using MediaBrowser.Common;
+using MediaBrowser.Common.ScheduledTasks;
 using MediaBrowser.Common.Updates;
 using MediaBrowser.Common.Updates;
 using MediaBrowser.Model.Logging;
 using MediaBrowser.Model.Logging;
 using MediaBrowser.Model.Net;
 using MediaBrowser.Model.Net;
@@ -23,15 +24,13 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks
 
 
         private readonly IInstallationManager _installationManager;
         private readonly IInstallationManager _installationManager;
 
 
-        /// <summary>
-        /// Initializes a new instance of the <see cref="PluginUpdateTask" /> class.
-        /// </summary>
-        /// <param name="logger">The logger.</param>
-        /// <param name="installationManager">The installation manager.</param>
-        public PluginUpdateTask(ILogger logger, IInstallationManager installationManager)
+        private readonly IApplicationHost _appHost;
+
+        public PluginUpdateTask(ILogger logger, IInstallationManager installationManager, IApplicationHost appHost)
         {
         {
             _logger = logger;
             _logger = logger;
             _installationManager = installationManager;
             _installationManager = installationManager;
+            _appHost = appHost;
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -60,7 +59,7 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks
         {
         {
             progress.Report(0);
             progress.Report(0);
 
 
-            var packagesToInstall = (await _installationManager.GetAvailablePluginUpdates(true, cancellationToken).ConfigureAwait(false)).ToList();
+            var packagesToInstall = (await _installationManager.GetAvailablePluginUpdates(_appHost.ApplicationVersion, true, cancellationToken).ConfigureAwait(false)).ToList();
 
 
             progress.Report(10);
             progress.Report(10);
 
 

+ 1 - 2
MediaBrowser.ServerApplication/ApplicationHost.cs

@@ -60,7 +60,6 @@ using System.Net.Http;
 using System.Reflection;
 using System.Reflection;
 using System.Threading;
 using System.Threading;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
-using System.Windows;
 
 
 namespace MediaBrowser.ServerApplication
 namespace MediaBrowser.ServerApplication
 {
 {
@@ -708,7 +707,7 @@ namespace MediaBrowser.ServerApplication
         {
         {
             var availablePackages = await InstallationManager.GetAvailablePackagesWithoutRegistrationInfo(cancellationToken).ConfigureAwait(false);
             var availablePackages = await InstallationManager.GetAvailablePackagesWithoutRegistrationInfo(cancellationToken).ConfigureAwait(false);
 
 
-            var version = InstallationManager.GetLatestCompatibleVersion(availablePackages, Constants.MbServerPkgName, ConfigurationManager.CommonConfiguration.SystemUpdateLevel);
+            var version = InstallationManager.GetLatestCompatibleVersion(availablePackages, Constants.MbServerPkgName, ApplicationVersion, ConfigurationManager.CommonConfiguration.SystemUpdateLevel);
 
 
             return version != null ? new CheckForUpdateResult { AvailableVersion = version.version, IsUpdateAvailable = version.version > ApplicationVersion, Package = version } :
             return version != null ? new CheckForUpdateResult { AvailableVersion = version.version, IsUpdateAvailable = version.version > ApplicationVersion, Package = version } :
                        new CheckForUpdateResult { AvailableVersion = ApplicationVersion, IsUpdateAvailable = false };
                        new CheckForUpdateResult { AvailableVersion = ApplicationVersion, IsUpdateAvailable = false };