瀏覽代碼

update plugin classes for nightly builds

dkanada 5 年之前
父節點
當前提交
974a04c129

+ 4 - 4
Emby.Server.Implementations/Activity/ActivityLogEntryPoint.cs

@@ -421,7 +421,7 @@ namespace Emby.Server.Implementations.Activity
             });
         }
 
-        private void OnPluginUpdated(object sender, GenericEventArgs<(IPlugin, PackageVersionInfo)> e)
+        private void OnPluginUpdated(object sender, GenericEventArgs<(IPlugin, VersionInfo)> e)
         {
             CreateLogEntry(new ActivityLogEntry
             {
@@ -433,7 +433,7 @@ namespace Emby.Server.Implementations.Activity
                 ShortOverview = string.Format(
                     CultureInfo.InvariantCulture,
                     _localization.GetLocalizedString("VersionNumber"),
-                    e.Argument.Item2.versionStr),
+                    e.Argument.Item2.versionString),
                 Overview = e.Argument.Item2.description
             });
         }
@@ -450,7 +450,7 @@ namespace Emby.Server.Implementations.Activity
             });
         }
 
-        private void OnPluginInstalled(object sender, GenericEventArgs<PackageVersionInfo> e)
+        private void OnPluginInstalled(object sender, GenericEventArgs<VersionInfo> e)
         {
             CreateLogEntry(new ActivityLogEntry
             {
@@ -462,7 +462,7 @@ namespace Emby.Server.Implementations.Activity
                 ShortOverview = string.Format(
                     CultureInfo.InvariantCulture,
                     _localization.GetLocalizedString("VersionNumber"),
-                    e.Argument.versionStr)
+                    e.Argument.versionString)
             });
         }
 

+ 5 - 5
Emby.Server.Implementations/ApplicationHost.cs

@@ -212,14 +212,14 @@ namespace Emby.Server.Implementations
         public IFileSystem FileSystemManager { get; set; }
 
         /// <inheritdoc />
-        public PackageVersionClass SystemUpdateLevel
+        public ReleaseChannel SystemUpdateLevel
         {
             get
             {
-#if BETA
-                return PackageVersionClass.Beta;
+#if NIGHTLY
+                return PackageChannel.Nightly;
 #else
-                return PackageVersionClass.Release;
+                return ReleaseChannel.Stable;
 #endif
             }
         }
@@ -1003,7 +1003,7 @@ namespace Emby.Server.Implementations
             AuthenticatedAttribute.AuthService = AuthService;
         }
 
-        private async void PluginInstalled(object sender, GenericEventArgs<PackageVersionInfo> args)
+        private async void PluginInstalled(object sender, GenericEventArgs<VersionInfo> args)
         {
             string dir = Path.Combine(ApplicationPaths.PluginsPath, args.Argument.name);
             var types = Directory.EnumerateFiles(dir, "*.dll", SearchOption.AllDirectories)

+ 34 - 34
Emby.Server.Implementations/Updates/InstallationManager.cs

@@ -23,12 +23,12 @@ using Microsoft.Extensions.Logging;
 namespace Emby.Server.Implementations.Updates
 {
     /// <summary>
-    /// Manages all install, uninstall and update operations (both plugins and system).
+    /// Manages all install, uninstall, and update operations for the system and individual plugins.
     /// </summary>
     public class InstallationManager : IInstallationManager
     {
         /// <summary>
-        /// The _logger.
+        /// The logger.
         /// </summary>
         private readonly ILogger _logger;
         private readonly IApplicationPaths _appPaths;
@@ -101,10 +101,10 @@ namespace Emby.Server.Implementations.Updates
         public event EventHandler<GenericEventArgs<IPlugin>> PluginUninstalled;
 
         /// <inheritdoc />
-        public event EventHandler<GenericEventArgs<(IPlugin, PackageVersionInfo)>> PluginUpdated;
+        public event EventHandler<GenericEventArgs<(IPlugin, VersionInfo)>> PluginUpdated;
 
         /// <inheritdoc />
-        public event EventHandler<GenericEventArgs<PackageVersionInfo>> PluginInstalled;
+        public event EventHandler<GenericEventArgs<VersionInfo>> PluginInstalled;
 
         /// <inheritdoc />
         public IEnumerable<InstallationInfo> CompletedInstallations => _completedInstallationsInternal;
@@ -115,7 +115,7 @@ namespace Emby.Server.Implementations.Updates
             using (var response = await _httpClient.SendAsync(
                 new HttpRequestOptions
                 {
-                    Url = "https://repo.jellyfin.org/releases/plugin/manifest.json",
+                    Url = "https://repo.jellyfin.org/releases/plugin/manifest-water.json",
                     CancellationToken = cancellationToken,
                     CacheMode = CacheMode.Unconditional,
                     CacheLength = TimeSpan.FromMinutes(3)
@@ -148,48 +148,48 @@ namespace Emby.Server.Implementations.Updates
         }
 
         /// <inheritdoc />
-        public IEnumerable<PackageVersionInfo> GetCompatibleVersions(
-            IEnumerable<PackageVersionInfo> availableVersions,
+        public IEnumerable<VersionInfo> GetCompatibleVersions(
+            IEnumerable<VersionInfo> availableVersions,
             Version minVersion = null,
-            PackageVersionClass classification = PackageVersionClass.Release)
+            ReleaseChannel releaseChannel = ReleaseChannel.Stable)
         {
             var appVer = _applicationHost.ApplicationVersion;
             availableVersions = availableVersions
-                .Where(x => x.classification == classification
-                    && Version.Parse(x.requiredVersionStr) <= appVer);
+                .Where(x => x.channel == releaseChannel
+                    && Version.Parse(x.minimumServerVersion) <= appVer);
 
             if (minVersion != null)
             {
-                availableVersions = availableVersions.Where(x => x.Version >= minVersion);
+                availableVersions = availableVersions.Where(x => x.versionCode >= minVersion);
             }
 
-            return availableVersions.OrderByDescending(x => x.Version);
+            return availableVersions.OrderByDescending(x => x.versionCode);
         }
 
         /// <inheritdoc />
-        public IEnumerable<PackageVersionInfo> GetCompatibleVersions(
+        public IEnumerable<VersionInfo> GetCompatibleVersions(
             IEnumerable<PackageInfo> availablePackages,
             string name = null,
             Guid guid = default,
             Version minVersion = null,
-            PackageVersionClass classification = PackageVersionClass.Release)
+            ReleaseChannel releaseChannel = ReleaseChannel.Stable)
         {
             var package = FilterPackages(availablePackages, name, guid).FirstOrDefault();
 
-            // Package not found.
+            // Package not found in repository
             if (package == null)
             {
-                return Enumerable.Empty<PackageVersionInfo>();
+                return Enumerable.Empty<VersionInfo>();
             }
 
             return GetCompatibleVersions(
                 package.versions,
                 minVersion,
-                classification);
+                releaseChannel);
         }
 
         /// <inheritdoc />
-        public async IAsyncEnumerable<PackageVersionInfo> GetAvailablePluginUpdates([EnumeratorCancellation] CancellationToken cancellationToken = default)
+        public async IAsyncEnumerable<VersionInfo> GetAvailablePluginUpdates([EnumeratorCancellation] CancellationToken cancellationToken = default)
         {
             var catalog = await GetAvailablePackages(cancellationToken).ConfigureAwait(false);
 
@@ -198,8 +198,8 @@ namespace Emby.Server.Implementations.Updates
             // Figure out what needs to be installed
             foreach (var plugin in _applicationHost.Plugins)
             {
-                var compatibleversions = GetCompatibleVersions(catalog, plugin.Name, plugin.Id, plugin.Version, systemUpdateLevel);
-                var version = compatibleversions.FirstOrDefault(y => y.Version > plugin.Version);
+                var compatibleVersions = GetCompatibleVersions(catalog, plugin.Name, plugin.Id, plugin.Version, systemUpdateLevel);
+                var version = compatibleVersions.FirstOrDefault(y => y.versionCode > plugin.Version);
                 if (version != null
                     && !CompletedInstallations.Any(x => string.Equals(x.AssemblyGuid, version.guid, StringComparison.OrdinalIgnoreCase)))
                 {
@@ -209,7 +209,7 @@ namespace Emby.Server.Implementations.Updates
         }
 
         /// <inheritdoc />
-        public async Task InstallPackage(PackageVersionInfo package, CancellationToken cancellationToken)
+        public async Task InstallPackage(VersionInfo package, CancellationToken cancellationToken)
         {
             if (package == null)
             {
@@ -221,8 +221,8 @@ namespace Emby.Server.Implementations.Updates
                 Id = Guid.NewGuid(),
                 Name = package.name,
                 AssemblyGuid = package.guid,
-                UpdateClass = package.classification,
-                Version = package.versionStr
+                UpdateClass = package.channel,
+                Version = package.versionString
             };
 
             var innerCancellationTokenSource = new CancellationTokenSource();
@@ -240,7 +240,7 @@ namespace Emby.Server.Implementations.Updates
             var installationEventArgs = new InstallationEventArgs
             {
                 InstallationInfo = installationInfo,
-                PackageVersionInfo = package
+                VersionInfo = package
             };
 
             PackageInstalling?.Invoke(this, installationEventArgs);
@@ -265,7 +265,7 @@ namespace Emby.Server.Implementations.Updates
                     _currentInstallations.Remove(tuple);
                 }
 
-                _logger.LogInformation("Package installation cancelled: {0} {1}", package.name, package.versionStr);
+                _logger.LogInformation("Package installation cancelled: {0} {1}", package.name, package.versionString);
 
                 PackageInstallationCancelled?.Invoke(this, installationEventArgs);
 
@@ -301,7 +301,7 @@ namespace Emby.Server.Implementations.Updates
         /// <param name="package">The package.</param>
         /// <param name="cancellationToken">The cancellation token.</param>
         /// <returns><see cref="Task" />.</returns>
-        private async Task InstallPackageInternal(PackageVersionInfo package, CancellationToken cancellationToken)
+        private async Task InstallPackageInternal(VersionInfo package, CancellationToken cancellationToken)
         {
             // Set last update time if we were installed before
             IPlugin plugin = _applicationHost.Plugins.FirstOrDefault(p => string.Equals(p.Id.ToString(), package.guid, StringComparison.OrdinalIgnoreCase))
@@ -313,26 +313,26 @@ namespace Emby.Server.Implementations.Updates
             // Do plugin-specific processing
             if (plugin == null)
             {
-                _logger.LogInformation("New plugin installed: {0} {1} {2}", package.name, package.versionStr ?? string.Empty, package.classification);
+                _logger.LogInformation("New plugin installed: {0} {1} {2}", package.name, package.versionString ?? string.Empty, package.channel);
 
-                PluginInstalled?.Invoke(this, new GenericEventArgs<PackageVersionInfo>(package));
+                PluginInstalled?.Invoke(this, new GenericEventArgs<VersionInfo>(package));
             }
             else
             {
-                _logger.LogInformation("Plugin updated: {0} {1} {2}", package.name, package.versionStr ?? string.Empty, package.classification);
+                _logger.LogInformation("Plugin updated: {0} {1} {2}", package.name, package.versionString ?? string.Empty, package.channel);
 
-                PluginUpdated?.Invoke(this, new GenericEventArgs<(IPlugin, PackageVersionInfo)>((plugin, package)));
+                PluginUpdated?.Invoke(this, new GenericEventArgs<(IPlugin, VersionInfo)>((plugin, package)));
             }
 
             _applicationHost.NotifyPendingRestart();
         }
 
-        private async Task PerformPackageInstallation(PackageVersionInfo package, CancellationToken cancellationToken)
+        private async Task PerformPackageInstallation(VersionInfo package, CancellationToken cancellationToken)
         {
-            var extension = Path.GetExtension(package.targetFilename);
+            var extension = Path.GetExtension(package.filename);
             if (!string.Equals(extension, ".zip", StringComparison.OrdinalIgnoreCase))
             {
-                _logger.LogError("Only zip packages are supported. {Filename} is not a zip archive.", package.targetFilename);
+                _logger.LogError("Only zip packages are supported. {Filename} is not a zip archive.", package.filename);
                 return;
             }
 
@@ -379,7 +379,7 @@ namespace Emby.Server.Implementations.Updates
         }
 
         /// <summary>
-        /// Uninstalls a plugin
+        /// Uninstalls a plugin.
         /// </summary>
         /// <param name="plugin">The plugin.</param>
         public void UninstallPlugin(IPlugin plugin)

+ 1 - 35
MediaBrowser.Api/PackageService.cs

@@ -42,23 +42,6 @@ namespace MediaBrowser.Api
     [Authenticated]
     public class GetPackages : IReturn<PackageInfo[]>
     {
-        /// <summary>
-        /// Gets or sets the name.
-        /// </summary>
-        /// <value>The name.</value>
-        [ApiMember(Name = "PackageType", Description = "Optional package type filter (System/UserInstalled)", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
-        public string PackageType { get; set; }
-
-        [ApiMember(Name = "TargetSystems", Description = "Optional. Filter by target system type. Allows multiple, comma delimited.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
-        public string TargetSystems { get; set; }
-
-        [ApiMember(Name = "IsPremium", Description = "Optional. Filter by premium status", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "GET")]
-        public bool? IsPremium { get; set; }
-
-        [ApiMember(Name = "IsAdult", Description = "Optional. Filter by package that contain adult content.", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "GET")]
-        public bool? IsAdult { get; set; }
-
-        public bool? IsAppStoreEnabled { get; set; }
     }
 
     /// <summary>
@@ -94,7 +77,7 @@ namespace MediaBrowser.Api
         /// </summary>
         /// <value>The update class.</value>
         [ApiMember(Name = "UpdateClass", Description = "Optional update class (Dev, Beta, Release). Defaults to Release.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")]
-        public PackageVersionClass UpdateClass { get; set; }
+        public ReleaseChannel UpdateClass { get; set; }
     }
 
     /// <summary>
@@ -154,23 +137,6 @@ namespace MediaBrowser.Api
         {
             IEnumerable<PackageInfo> packages = await _installationManager.GetAvailablePackages().ConfigureAwait(false);
 
-            if (!string.IsNullOrEmpty(request.TargetSystems))
-            {
-                var apps = request.TargetSystems.Split(',').Select(i => (PackageTargetSystem)Enum.Parse(typeof(PackageTargetSystem), i, true));
-
-                packages = packages.Where(p => apps.Contains(p.targetSystem));
-            }
-
-            if (request.IsAdult.HasValue)
-            {
-                packages = packages.Where(p => p.adult == request.IsAdult.Value);
-            }
-
-            if (request.IsAppStoreEnabled.HasValue)
-            {
-                packages = packages.Where(p => p.enableInAppStore == request.IsAppStoreEnabled.Value);
-            }
-
             return ToOptimizedResult(packages.ToArray());
         }
 

+ 0 - 1
MediaBrowser.Common/Extensions/BaseExtensions.cs

@@ -35,7 +35,6 @@ namespace MediaBrowser.Common.Extensions
             {
                 return new Guid(provider.ComputeHash(Encoding.Unicode.GetBytes(str)));
             }
-
 #pragma warning restore CA5351
         }
     }

+ 2 - 2
MediaBrowser.Common/IApplicationHost.cs

@@ -50,8 +50,8 @@ namespace MediaBrowser.Common
         /// <summary>
         /// Gets the version class of the system.
         /// </summary>
-        /// <value><see cref="PackageVersionClass.Release" /> or <see cref="PackageVersionClass.Beta" />.</value>
-        PackageVersionClass SystemUpdateLevel { get; }
+        /// <value><see cref="ReleaseChannel.Stable" /> or <see cref="ReleaseChannel.Nightly" />.</value>
+        ReleaseChannel SystemUpdateLevel { get; }
 
         /// <summary>
         /// Gets the application version.

+ 4 - 4
MediaBrowser.Common/Plugins/BasePlugin.cs

@@ -67,7 +67,7 @@ namespace MediaBrowser.Common.Plugins
         }
 
         /// <summary>
-        /// Called when just before the plugin is uninstalled from the server.
+        /// Called just before the plugin is uninstalled from the server.
         /// </summary>
         public virtual void OnUninstalling()
         {
@@ -101,7 +101,7 @@ namespace MediaBrowser.Common.Plugins
         private readonly object _configurationSyncLock = new object();
 
         /// <summary>
-        /// The save lock.
+        /// The configuration save lock.
         /// </summary>
         private readonly object _configurationSaveLock = new object();
 
@@ -148,7 +148,7 @@ namespace MediaBrowser.Common.Plugins
         protected string AssemblyFileName => Path.GetFileName(AssemblyFilePath);
 
         /// <summary>
-        /// Gets or sets the plugin's configuration.
+        /// Gets or sets the plugin configuration.
         /// </summary>
         /// <value>The configuration.</value>
         public TConfigurationType Configuration
@@ -186,7 +186,7 @@ namespace MediaBrowser.Common.Plugins
         public string ConfigurationFilePath => Path.Combine(ApplicationPaths.PluginConfigurationsPath, ConfigurationFileName);
 
         /// <summary>
-        /// Gets the plugin's configuration.
+        /// Gets the plugin configuration.
         /// </summary>
         /// <value>The configuration.</value>
         BasePluginConfiguration IHasPluginConfiguration.Configuration => Configuration;

+ 11 - 11
MediaBrowser.Common/Updates/IInstallationManager.cs

@@ -29,12 +29,12 @@ namespace MediaBrowser.Common.Updates
         /// <summary>
         /// Occurs when a plugin is updated.
         /// </summary>
-        event EventHandler<GenericEventArgs<(IPlugin, PackageVersionInfo)>> PluginUpdated;
+        event EventHandler<GenericEventArgs<(IPlugin, VersionInfo)>> PluginUpdated;
 
         /// <summary>
         /// Occurs when a plugin is installed.
         /// </summary>
-        event EventHandler<GenericEventArgs<PackageVersionInfo>> PluginInstalled;
+        event EventHandler<GenericEventArgs<VersionInfo>> PluginInstalled;
 
         /// <summary>
         /// Gets the completed installations.
@@ -65,12 +65,12 @@ namespace MediaBrowser.Common.Updates
         /// </summary>
         /// <param name="availableVersions">The available version of the plugin.</param>
         /// <param name="minVersion">The minimum required version of the plugin.</param>
-        /// <param name="classification">The classification of updates.</param>
+        /// <param name="releaseChannel">The classification of updates.</param>
         /// <returns>All compatible versions ordered from newest to oldest.</returns>
-        IEnumerable<PackageVersionInfo> GetCompatibleVersions(
-            IEnumerable<PackageVersionInfo> availableVersions,
+        IEnumerable<VersionInfo> GetCompatibleVersions(
+            IEnumerable<VersionInfo> availableVersions,
             Version minVersion = null,
-            PackageVersionClass classification = PackageVersionClass.Release);
+            ReleaseChannel releaseChannel = ReleaseChannel.Stable);
 
         /// <summary>
         /// Returns all compatible versions ordered from newest to oldest.
@@ -79,21 +79,21 @@ namespace MediaBrowser.Common.Updates
         /// <param name="name">The name.</param>
         /// <param name="guid">The guid of the plugin.</param>
         /// <param name="minVersion">The minimum required version of the plugin.</param>
-        /// <param name="classification">The classification.</param>
+        /// <param name="releaseChannel">The classification.</param>
         /// <returns>All compatible versions ordered from newest to oldest.</returns>
-        IEnumerable<PackageVersionInfo> GetCompatibleVersions(
+        IEnumerable<VersionInfo> GetCompatibleVersions(
             IEnumerable<PackageInfo> availablePackages,
             string name = null,
             Guid guid = default,
             Version minVersion = null,
-            PackageVersionClass classification = PackageVersionClass.Release);
+            ReleaseChannel releaseChannel = ReleaseChannel.Stable);
 
         /// <summary>
         /// Returns the available plugin updates.
         /// </summary>
         /// <param name="cancellationToken">The cancellation token.</param>
         /// <returns>The available plugin updates.</returns>
-        IAsyncEnumerable<PackageVersionInfo> GetAvailablePluginUpdates(CancellationToken cancellationToken = default);
+        IAsyncEnumerable<VersionInfo> GetAvailablePluginUpdates(CancellationToken cancellationToken = default);
 
         /// <summary>
         /// Installs the package.
@@ -101,7 +101,7 @@ namespace MediaBrowser.Common.Updates
         /// <param name="package">The package.</param>
         /// <param name="cancellationToken">The cancellation token.</param>
         /// <returns><see cref="Task" />.</returns>
-        Task InstallPackage(PackageVersionInfo package, CancellationToken cancellationToken = default);
+        Task InstallPackage(VersionInfo package, CancellationToken cancellationToken = default);
 
         /// <summary>
         /// Uninstalls a plugin.

+ 1 - 1
MediaBrowser.Common/Updates/InstallationEventArgs.cs

@@ -9,6 +9,6 @@ namespace MediaBrowser.Common.Updates
     {
         public InstallationInfo InstallationInfo { get; set; }
 
-        public PackageVersionInfo PackageVersionInfo { get; set; }
+        public VersionInfo VersionInfo { get; set; }
     }
 }

+ 1 - 1
MediaBrowser.Model/MediaBrowser.Model.csproj

@@ -11,7 +11,7 @@
     <TargetFramework>netstandard2.1</TargetFramework>
     <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
-    <TreatWarningsAsErrors Condition=" '$(Configuration)' == 'Release' " >true</TreatWarningsAsErrors>
+    <TreatWarningsAsErrors Condition=" '$(Configuration)' == 'Release' ">true</TreatWarningsAsErrors>
   </PropertyGroup>
 
   <ItemGroup>

+ 1 - 1
MediaBrowser.Model/System/SystemInfo.cs

@@ -27,7 +27,7 @@ namespace MediaBrowser.Model.System
     /// </summary>
     public class SystemInfo : PublicSystemInfo
     {
-        public PackageVersionClass SystemUpdateLevel { get; set; }
+        public ReleaseChannel SystemUpdateLevel { get; set; }
 
         /// <summary>
         /// Gets or sets the display name of the operating system.

+ 2 - 2
MediaBrowser.Model/Updates/CheckForUpdateResult.cs

@@ -17,13 +17,13 @@ namespace MediaBrowser.Model.Updates
         /// <value>The available version.</value>
         public string AvailableVersion
         {
-            get => Package != null ? Package.versionStr : "0.0.0.1";
+            get => Package != null ? Package.versionString : "0.0.0.1";
             set { } // need this for the serializer
         }
 
         /// <summary>
         /// Get or sets package information for an available update
         /// </summary>
-        public PackageVersionInfo Package { get; set; }
+        public VersionInfo Package { get; set; }
     }
 }

+ 1 - 1
MediaBrowser.Model/Updates/InstallationInfo.cs

@@ -35,6 +35,6 @@ namespace MediaBrowser.Model.Updates
         /// Gets or sets the update class.
         /// </summary>
         /// <value>The update class.</value>
-        public PackageVersionClass UpdateClass { get; set; }
+        public ReleaseChannel UpdateClass { get; set; }
     }
 }

+ 5 - 101
MediaBrowser.Model/Updates/PackageInfo.cs

@@ -8,12 +8,6 @@ namespace MediaBrowser.Model.Updates
     /// </summary>
     public class PackageInfo
     {
-        /// <summary>
-        /// The internal id of this package.
-        /// </summary>
-        /// <value>The id.</value>
-        public string id { get; set; }
-
         /// <summary>
         /// Gets or sets the name.
         /// </summary>
@@ -32,24 +26,6 @@ namespace MediaBrowser.Model.Updates
         /// <value>The overview.</value>
         public string overview { get; set; }
 
-        /// <summary>
-        /// Gets or sets a value indicating whether this instance is premium.
-        /// </summary>
-        /// <value><c>true</c> if this instance is premium; otherwise, <c>false</c>.</value>
-        public bool isPremium { get; set; }
-
-        /// <summary>
-        /// Gets or sets a value indicating whether this instance is adult only content.
-        /// </summary>
-        /// <value><c>true</c> if this instance is adult; otherwise, <c>false</c>.</value>
-        public bool adult { get; set; }
-
-        /// <summary>
-        /// Gets or sets the rich desc URL.
-        /// </summary>
-        /// <value>The rich desc URL.</value>
-        public string richDescUrl { get; set; }
-
         /// <summary>
         /// Gets or sets the thumb image.
         /// </summary>
@@ -63,16 +39,10 @@ namespace MediaBrowser.Model.Updates
         public string previewImage { get; set; }
 
         /// <summary>
-        /// Gets or sets the type.
-        /// </summary>
-        /// <value>The type.</value>
-        public string type { get; set; }
-
-        /// <summary>
-        /// Gets or sets the target filename.
+        /// Gets or sets the target filename for the downloaded binary.
         /// </summary>
         /// <value>The target filename.</value>
-        public string targetFilename { get; set; }
+        public string filename { get; set; }
 
         /// <summary>
         /// Gets or sets the owner.
@@ -87,90 +57,24 @@ namespace MediaBrowser.Model.Updates
         public string category { get; set; }
 
         /// <summary>
-        /// Gets or sets the catalog tile color.
-        /// </summary>
-        /// <value>The owner.</value>
-        public string tileColor { get; set; }
-
-        /// <summary>
-        /// Gets or sets the feature id of this package (if premium).
-        /// </summary>
-        /// <value>The feature id.</value>
-        public string featureId { get; set; }
-
-        /// <summary>
-        /// Gets or sets the registration info for this package (if premium).
-        /// </summary>
-        /// <value>The registration info.</value>
-        public string regInfo { get; set; }
-
-        /// <summary>
-        /// Gets or sets the price for this package (if premium).
-        /// </summary>
-        /// <value>The price.</value>
-        public float price { get; set; }
-
-        /// <summary>
-        /// Gets or sets the target system for this plug-in (Server, MBTheater, MBClassic).
-        /// </summary>
-        /// <value>The target system.</value>
-        public PackageTargetSystem targetSystem { get; set; }
-
-        /// <summary>
-        /// The guid of the assembly associated with this package (if a plug-in).
+        /// The guid of the assembly associated with this plugin.
         /// This is used to identify the proper item for automatic updates.
         /// </summary>
         /// <value>The name.</value>
         public string guid { get; set; }
 
-        /// <summary>
-        /// Gets or sets the total number of ratings for this package.
-        /// </summary>
-        /// <value>The total ratings.</value>
-        public int? totalRatings { get; set; }
-
-        /// <summary>
-        /// Gets or sets the average rating for this package .
-        /// </summary>
-        /// <value>The rating.</value>
-        public float avgRating { get; set; }
-
-        /// <summary>
-        /// Gets or sets whether or not this package is registered.
-        /// </summary>
-        /// <value>True if registered.</value>
-        public bool isRegistered { get; set; }
-
-        /// <summary>
-        /// Gets or sets the expiration date for this package.
-        /// </summary>
-        /// <value>Expiration Date.</value>
-        public DateTime expDate { get; set; }
-
         /// <summary>
         /// Gets or sets the versions.
         /// </summary>
         /// <value>The versions.</value>
-        public IReadOnlyList<PackageVersionInfo> versions { get; set; }
-
-        /// <summary>
-        /// Gets or sets a value indicating whether [enable in application store].
-        /// </summary>
-        /// <value><c>true</c> if [enable in application store]; otherwise, <c>false</c>.</value>
-        public bool enableInAppStore { get; set; }
-
-        /// <summary>
-        /// Gets or sets the installs.
-        /// </summary>
-        /// <value>The installs.</value>
-        public int installs { get; set; }
+        public IReadOnlyList<VersionInfo> versions { get; set; }
 
         /// <summary>
         /// Initializes a new instance of the <see cref="PackageInfo"/> class.
         /// </summary>
         public PackageInfo()
         {
-            versions = Array.Empty<PackageVersionInfo>();
+            versions = Array.Empty<VersionInfo>();
         }
     }
 }

+ 0 - 23
MediaBrowser.Model/Updates/PackageTargetSystem.cs

@@ -1,23 +0,0 @@
-namespace MediaBrowser.Model.Updates
-{
-    /// <summary>
-    /// Enum PackageType.
-    /// </summary>
-    public enum PackageTargetSystem
-    {
-        /// <summary>
-        /// Server.
-        /// </summary>
-        Server,
-
-        /// <summary>
-        /// MB Theater.
-        /// </summary>
-        MBTheater,
-
-        /// <summary>
-        /// MB Classic.
-        /// </summary>
-        MBClassic
-    }
-}

+ 0 - 97
MediaBrowser.Model/Updates/PackageVersionInfo.cs

@@ -1,97 +0,0 @@
-#pragma warning disable CS1591
-#pragma warning disable SA1600
-
-using System;
-using System.Text.Json.Serialization;
-
-namespace MediaBrowser.Model.Updates
-{
-    /// <summary>
-    /// Class PackageVersionInfo.
-    /// </summary>
-    public class PackageVersionInfo
-    {
-        /// <summary>
-        /// Gets or sets the name.
-        /// </summary>
-        /// <value>The name.</value>
-        public string name { get; set; }
-
-        /// <summary>
-        /// Gets or sets the guid.
-        /// </summary>
-        /// <value>The guid.</value>
-        public string guid { get; set; }
-
-        /// <summary>
-        /// Gets or sets the version STR.
-        /// </summary>
-        /// <value>The version STR.</value>
-        public string versionStr { get; set; }
-
-        /// <summary>
-        /// The _version
-        /// </summary>
-        private Version _version;
-
-        /// <summary>
-        /// Gets or sets the version.
-        /// Had to make this an interpreted property since Protobuf can't handle Version
-        /// </summary>
-        /// <value>The version.</value>
-        [JsonIgnore]
-        public Version Version
-        {
-            get
-            {
-                if (_version == null)
-                {
-                    var ver = versionStr;
-                    _version = new Version(string.IsNullOrEmpty(ver) ? "0.0.0.1" : ver);
-                }
-
-                return _version;
-            }
-        }
-
-        /// <summary>
-        /// Gets or sets the classification.
-        /// </summary>
-        /// <value>The classification.</value>
-        public PackageVersionClass classification { get; set; }
-
-        /// <summary>
-        /// Gets or sets the description.
-        /// </summary>
-        /// <value>The description.</value>
-        public string description { get; set; }
-
-        /// <summary>
-        /// Gets or sets the required version STR.
-        /// </summary>
-        /// <value>The required version STR.</value>
-        public string requiredVersionStr { get; set; }
-
-        /// <summary>
-        /// Gets or sets the source URL.
-        /// </summary>
-        /// <value>The source URL.</value>
-        public string sourceUrl { get; set; }
-
-        /// <summary>
-        /// Gets or sets the source URL.
-        /// </summary>
-        /// <value>The source URL.</value>
-        public string checksum { get; set; }
-
-        /// <summary>
-        /// Gets or sets the target filename.
-        /// </summary>
-        /// <value>The target filename.</value>
-        public string targetFilename { get; set; }
-
-        public string infoUrl { get; set; }
-
-        public string runtimes { get; set; }
-    }
-}

+ 5 - 10
MediaBrowser.Model/Updates/PackageVersionClass.cs → MediaBrowser.Model/Updates/ReleaseChannel.cs

@@ -3,21 +3,16 @@ namespace MediaBrowser.Model.Updates
     /// <summary>
     /// Enum PackageVersionClass.
     /// </summary>
-    public enum PackageVersionClass
+    public enum ReleaseChannel
     {
         /// <summary>
-        /// The release.
+        /// The stable.
         /// </summary>
-        Release = 0,
+        Stable = 0,
 
         /// <summary>
-        /// The beta.
+        /// The nightly.
         /// </summary>
-        Beta = 1,
-
-        /// <summary>
-        /// The dev.
-        /// </summary>
-        Dev = 2
+        Nightly = 1
     }
 }

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

@@ -0,0 +1,73 @@
+#pragma warning disable CS1591
+#pragma warning disable SA1600
+
+using System;
+
+namespace MediaBrowser.Model.Updates
+{
+    /// <summary>
+    /// Class PackageVersionInfo.
+    /// </summary>
+    public class VersionInfo
+    {
+        /// <summary>
+        /// Gets or sets the name.
+        /// </summary>
+        /// <value>The name.</value>
+        public string name { get; set; }
+
+        /// <summary>
+        /// Gets or sets the guid.
+        /// </summary>
+        /// <value>The guid.</value>
+        public string guid { get; set; }
+
+        /// <summary>
+        /// Gets or sets the version string.
+        /// </summary>
+        /// <value>The version string.</value>
+        public string versionString { get; set; }
+
+        /// <summary>
+        /// Gets or sets the version.
+        /// </summary>
+        /// <value>The version.</value>
+        public Version versionCode { get; set; }
+
+        /// <summary>
+        /// Gets or sets the release channel.
+        /// </summary>
+        /// <value>The release channel for a given package version.</value>
+        public ReleaseChannel channel { get; set; }
+
+        /// <summary>
+        /// Gets or sets the description.
+        /// </summary>
+        /// <value>The description.</value>
+        public string description { get; set; }
+
+        /// <summary>
+        /// Gets or sets the minimum required version for the server.
+        /// </summary>
+        /// <value>The minimum required version.</value>
+        public string minimumServerVersion { get; set; }
+
+        /// <summary>
+        /// Gets or sets the source URL.
+        /// </summary>
+        /// <value>The source URL.</value>
+        public string sourceUrl { get; set; }
+
+        /// <summary>
+        /// Gets or sets a checksum for the binary.
+        /// </summary>
+        /// <value>The checksum.</value>
+        public string checksum { get; set; }
+
+        /// <summary>
+        /// Gets or sets the target filename for the downloaded binary.
+        /// </summary>
+        /// <value>The target filename.</value>
+        public string filename { get; set; }
+    }
+}