diff options
| author | Joshua M. Boniface <joshua@boniface.me> | 2020-12-31 18:47:05 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-31 18:47:05 -0500 |
| commit | 406ae3e43a20216292c554151fa2d0e2a09edfa3 (patch) | |
| tree | 288ceeb9831470d5f573fccc6619f23b259c5531 /MediaBrowser.Model | |
| parent | e006cc8ac32ac470a203f60dfd49cbe3acc999e7 (diff) | |
| parent | bd1c115e46795f7db38366d31de79bf2ff88ca8d (diff) | |
Merge pull request #4709 from BaronGreenback/PluginDowngrade
Diffstat (limited to 'MediaBrowser.Model')
| -rw-r--r-- | MediaBrowser.Model/Configuration/ServerConfiguration.cs | 10 | ||||
| -rw-r--r-- | MediaBrowser.Model/Plugins/PluginInfo.cs | 43 | ||||
| -rw-r--r-- | MediaBrowser.Model/Plugins/PluginPageInfo.cs | 34 | ||||
| -rw-r--r-- | MediaBrowser.Model/Plugins/PluginStatus.cs | 47 | ||||
| -rw-r--r-- | MediaBrowser.Model/Updates/InstallationInfo.cs | 8 | ||||
| -rw-r--r-- | MediaBrowser.Model/Updates/PackageInfo.cs | 50 | ||||
| -rw-r--r-- | MediaBrowser.Model/Updates/VersionInfo.cs | 47 |
7 files changed, 181 insertions, 58 deletions
diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs index 9fb978e9be..0f0ad0f9aa 100644 --- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs +++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs @@ -456,5 +456,15 @@ namespace MediaBrowser.Model.Configuration /// Gets or sets the how many metadata refreshes can run concurrently. /// </summary> public int LibraryMetadataRefreshConcurrency { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether older plugins should automatically be deleted from the plugin folder. + /// </summary> + public bool RemoveOldPlugins { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether plugin image should be disabled. + /// </summary> + public bool DisablePluginImages { get; set; } } } diff --git a/MediaBrowser.Model/Plugins/PluginInfo.cs b/MediaBrowser.Model/Plugins/PluginInfo.cs index dd215192f9..25216610d4 100644 --- a/MediaBrowser.Model/Plugins/PluginInfo.cs +++ b/MediaBrowser.Model/Plugins/PluginInfo.cs @@ -1,4 +1,7 @@ -#nullable disable +#nullable enable + +using System; + namespace MediaBrowser.Model.Plugins { /// <summary> @@ -7,34 +10,46 @@ namespace MediaBrowser.Model.Plugins public class PluginInfo { /// <summary> + /// Initializes a new instance of the <see cref="PluginInfo"/> class. + /// </summary> + /// <param name="name">The plugin name.</param> + /// <param name="version">The plugin <see cref="Version"/>.</param> + /// <param name="description">The plugin description.</param> + /// <param name="id">The <see cref="Guid"/>.</param> + /// <param name="canUninstall">True if this plugin can be uninstalled.</param> + public PluginInfo(string name, Version version, string description, Guid id, bool canUninstall) + { + Name = name; + Version = version; + Description = description; + Id = id; + CanUninstall = canUninstall; + } + + /// <summary> /// Gets or sets the name. /// </summary> - /// <value>The name.</value> public string Name { get; set; } /// <summary> /// Gets or sets the version. /// </summary> - /// <value>The version.</value> - public string Version { get; set; } + public Version Version { get; set; } /// <summary> /// Gets or sets the name of the configuration file. /// </summary> - /// <value>The name of the configuration file.</value> - public string ConfigurationFileName { get; set; } + public string? ConfigurationFileName { get; set; } /// <summary> /// Gets or sets the description. /// </summary> - /// <value>The description.</value> public string Description { get; set; } /// <summary> /// Gets or sets the unique id. /// </summary> - /// <value>The unique id.</value> - public string Id { get; set; } + public Guid Id { get; set; } /// <summary> /// Gets or sets a value indicating whether the plugin can be uninstalled. @@ -42,9 +57,13 @@ namespace MediaBrowser.Model.Plugins public bool CanUninstall { get; set; } /// <summary> - /// Gets or sets the image URL. + /// Gets or sets a value indicating whether this plugin has a valid image. + /// </summary> + public bool HasImage { get; set; } + + /// <summary> + /// Gets or sets a value indicating the status of the plugin. /// </summary> - /// <value>The image URL.</value> - public string ImageUrl { get; set; } + public PluginStatus Status { get; set; } } } diff --git a/MediaBrowser.Model/Plugins/PluginPageInfo.cs b/MediaBrowser.Model/Plugins/PluginPageInfo.cs index ca72e19ee1..85c0aa204b 100644 --- a/MediaBrowser.Model/Plugins/PluginPageInfo.cs +++ b/MediaBrowser.Model/Plugins/PluginPageInfo.cs @@ -1,20 +1,40 @@ -#nullable disable -#pragma warning disable CS1591 +#nullable enable namespace MediaBrowser.Model.Plugins { + /// <summary> + /// Defines the <see cref="PluginPageInfo" />. + /// </summary> public class PluginPageInfo { - public string Name { get; set; } + /// <summary> + /// Gets or sets the name. + /// </summary> + public string Name { get; set; } = string.Empty; - public string DisplayName { get; set; } + /// <summary> + /// Gets or sets the display name. + /// </summary> + public string? DisplayName { get; set; } - public string EmbeddedResourcePath { get; set; } + /// <summary> + /// Gets or sets the resource path. + /// </summary> + public string EmbeddedResourcePath { get; set; } = string.Empty; + /// <summary> + /// Gets or sets a value indicating whether this plugin should appear in the main menu. + /// </summary> public bool EnableInMainMenu { get; set; } - public string MenuSection { get; set; } + /// <summary> + /// Gets or sets the menu section. + /// </summary> + public string? MenuSection { get; set; } - public string MenuIcon { get; set; } + /// <summary> + /// Gets or sets the menu icon. + /// </summary> + public string? MenuIcon { get; set; } } } diff --git a/MediaBrowser.Model/Plugins/PluginStatus.cs b/MediaBrowser.Model/Plugins/PluginStatus.cs new file mode 100644 index 0000000000..4b9b9bbeee --- /dev/null +++ b/MediaBrowser.Model/Plugins/PluginStatus.cs @@ -0,0 +1,47 @@ +namespace MediaBrowser.Model.Plugins +{ + /// <summary> + /// Plugin load status. + /// </summary> + public enum PluginStatus + { + /// <summary> + /// This plugin requires a restart in order for it to load. This is a memory only status. + /// The actual status of the plugin after reload is present in the manifest. + /// eg. A disabled plugin will still be active until the next restart, and so will have a memory status of Restart, + /// but a disk manifest status of Disabled. + /// </summary> + Restart = 1, + + /// <summary> + /// This plugin is currently running. + /// </summary> + Active = 0, + + /// <summary> + /// This plugin has been marked as disabled. + /// </summary> + Disabled = -1, + + /// <summary> + /// This plugin does not meet the TargetAbi requirements. + /// </summary> + NotSupported = -2, + + /// <summary> + /// This plugin caused an error when instantiated. (Either DI loop, or exception) + /// </summary> + Malfunctioned = -3, + + /// <summary> + /// This plugin has been superceded by another version. + /// </summary> + Superceded = -4, + + /// <summary> + /// An attempt to remove this plugin from disk will happen at every restart. + /// It will not be loaded, if unable to do so. + /// </summary> + Deleted = -5 + } +} diff --git a/MediaBrowser.Model/Updates/InstallationInfo.cs b/MediaBrowser.Model/Updates/InstallationInfo.cs index a6d80dba62..eebe1a9034 100644 --- a/MediaBrowser.Model/Updates/InstallationInfo.cs +++ b/MediaBrowser.Model/Updates/InstallationInfo.cs @@ -1,5 +1,6 @@ #nullable disable using System; +using System.Text.Json.Serialization; namespace MediaBrowser.Model.Updates { @@ -9,10 +10,11 @@ namespace MediaBrowser.Model.Updates public class InstallationInfo { /// <summary> - /// Gets or sets the guid. + /// Gets or sets the Id. /// </summary> - /// <value>The guid.</value> - public Guid Guid { get; set; } + /// <value>The Id.</value> + [JsonPropertyName("Guid")] + public Guid Id { get; set; } /// <summary> /// Gets or sets the name. diff --git a/MediaBrowser.Model/Updates/PackageInfo.cs b/MediaBrowser.Model/Updates/PackageInfo.cs index 5e93043639..7a82685f0e 100644 --- a/MediaBrowser.Model/Updates/PackageInfo.cs +++ b/MediaBrowser.Model/Updates/PackageInfo.cs @@ -1,6 +1,7 @@ -#nullable disable +#nullable enable using System; using System.Collections.Generic; +using System.Text.Json.Serialization; namespace MediaBrowser.Model.Updates { @@ -10,54 +11,75 @@ namespace MediaBrowser.Model.Updates public class PackageInfo { /// <summary> + /// Initializes a new instance of the <see cref="PackageInfo"/> class. + /// </summary> + public PackageInfo() + { + Versions = Array.Empty<VersionInfo>(); + Id = string.Empty; + Category = string.Empty; + Name = string.Empty; + Overview = string.Empty; + Owner = string.Empty; + Description = string.Empty; + } + + /// <summary> /// Gets or sets the name. /// </summary> /// <value>The name.</value> - public string name { get; set; } + [JsonPropertyName("name")] + public string Name { get; set; } /// <summary> /// Gets or sets a long description of the plugin containing features or helpful explanations. /// </summary> /// <value>The description.</value> - public string description { get; set; } + [JsonPropertyName("description")] + public string Description { get; set; } /// <summary> /// Gets or sets a short overview of what the plugin does. /// </summary> /// <value>The overview.</value> - public string overview { get; set; } + [JsonPropertyName("overview")] + public string Overview { get; set; } /// <summary> /// Gets or sets the owner. /// </summary> /// <value>The owner.</value> - public string owner { get; set; } + [JsonPropertyName("owner")] + public string Owner { get; set; } /// <summary> /// Gets or sets the category. /// </summary> /// <value>The category.</value> - public string category { get; set; } + [JsonPropertyName("category")] + public string Category { get; set; } /// <summary> - /// The guid of the assembly associated with this plugin. + /// Gets or sets 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; } + [JsonPropertyName("guid")] + public string Id { get; set; } /// <summary> /// Gets or sets the versions. /// </summary> /// <value>The versions.</value> - public IList<VersionInfo> versions { get; set; } + [JsonPropertyName("versions")] +#pragma warning disable CA2227 // Collection properties should be read only + public IList<VersionInfo> Versions { get; set; } +#pragma warning restore CA2227 // Collection properties should be read only /// <summary> - /// Initializes a new instance of the <see cref="PackageInfo"/> class. + /// Gets or sets the image url for the package. /// </summary> - public PackageInfo() - { - versions = Array.Empty<VersionInfo>(); - } + [JsonPropertyName("imageUrl")] + public string? ImageUrl { get; set; } } } diff --git a/MediaBrowser.Model/Updates/VersionInfo.cs b/MediaBrowser.Model/Updates/VersionInfo.cs index 844170999a..209092265e 100644 --- a/MediaBrowser.Model/Updates/VersionInfo.cs +++ b/MediaBrowser.Model/Updates/VersionInfo.cs @@ -1,76 +1,79 @@ -#nullable disable +#nullable enable -using System; +using System.Text.Json.Serialization; +using SysVersion = System.Version; namespace MediaBrowser.Model.Updates { /// <summary> - /// Class PackageVersionInfo. + /// Defines the <see cref="VersionInfo"/> class. /// </summary> public class VersionInfo { - private Version _version; + private SysVersion? _version; /// <summary> /// Gets or sets the version. /// </summary> /// <value>The version.</value> - public string version + [JsonPropertyName("version")] + public string Version { - get - { - return _version == null ? string.Empty : _version.ToString(); - } + get => _version == null ? string.Empty : _version.ToString(); - set - { - _version = Version.Parse(value); - } + set => _version = SysVersion.Parse(value); } /// <summary> - /// Gets the version as a <see cref="Version"/>. + /// Gets the version as a <see cref="SysVersion"/>. /// </summary> - public Version VersionNumber => _version; + public SysVersion VersionNumber => _version ?? new SysVersion(0, 0, 0); /// <summary> /// Gets or sets the changelog for this version. /// </summary> /// <value>The changelog.</value> - public string changelog { get; set; } + [JsonPropertyName("changelog")] + public string? Changelog { get; set; } /// <summary> /// Gets or sets the ABI that this version was built against. /// </summary> /// <value>The target ABI version.</value> - public string targetAbi { get; set; } + [JsonPropertyName("targetAbi")] + public string? TargetAbi { get; set; } /// <summary> /// Gets or sets the source URL. /// </summary> /// <value>The source URL.</value> - public string sourceUrl { get; set; } + [JsonPropertyName("sourceUrl")] + public string? SourceUrl { get; set; } /// <summary> /// Gets or sets a checksum for the binary. /// </summary> /// <value>The checksum.</value> - public string checksum { get; set; } + [JsonPropertyName("checksum")] + public string? Checksum { get; set; } /// <summary> /// Gets or sets a timestamp of when the binary was built. /// </summary> /// <value>The timestamp.</value> - public string timestamp { get; set; } + [JsonPropertyName("timestamp")] + public string? Timestamp { get; set; } /// <summary> /// Gets or sets the repository name. /// </summary> - public string repositoryName { get; set; } + [JsonPropertyName("repositoryName")] + public string RepositoryName { get; set; } = string.Empty; /// <summary> /// Gets or sets the repository url. /// </summary> - public string repositoryUrl { get; set; } + [JsonPropertyName("repositoryUrl")] + public string RepositoryUrl { get; set; } = string.Empty; } } |
