using System ;
using System.Collections.Generic ;
using System.Text.Json.Serialization ;
using MediaBrowser.Model.Plugins ;
namespace MediaBrowser.Common.Plugins
{
/// <summary>
/// Defines a Plugin manifest file.
/// </summary>
public class PluginManifest
{
/// <summary>
/// Initializes a new instance of the <see cref="PluginManifest"/> class.
/// </summary>
public PluginManifest ( )
{
Category = string . Empty ;
Changelog = string . Empty ;
Description = string . Empty ;
Id = Guid . Empty ;
Name = string . Empty ;
Owner = string . Empty ;
Overview = string . Empty ;
TargetAbi = string . Empty ;
Version = string . Empty ;
Assemblies = Array . Empty < string > ( ) ;
}
/// <summary>
/// Gets or sets the category of the plugin.
/// </summary>
[JsonPropertyName("category")]
public string Category { get ; set ; }
/// <summary>
/// Gets or sets the changelog information.
/// </summary>
[JsonPropertyName("changelog")]
public string Changelog { get ; set ; }
/// <summary>
/// Gets or sets the description of the plugin.
/// </summary>
[JsonPropertyName("description")]
public string Description { get ; set ; }
/// <summary>
/// Gets or sets the Global Unique Identifier for the plugin.
/// </summary>
[JsonPropertyName("guid")]
public Guid Id { get ; set ; }
/// <summary>
/// Gets or sets the Name of the plugin.
/// </summary>
[JsonPropertyName("name")]
public string Name { get ; set ; }
/// <summary>
/// Gets or sets an overview of the plugin.
/// </summary>
[JsonPropertyName("overview")]
public string Overview { get ; set ; }
/// <summary>
/// Gets or sets the owner of the plugin.
/// </summary>
[JsonPropertyName("owner")]
public string Owner { get ; set ; }
/// <summary>
/// Gets or sets the compatibility version for the plugin.
/// </summary>
[JsonPropertyName("targetAbi")]
public string TargetAbi { get ; set ; }
/// <summary>
/// Gets or sets the timestamp of the plugin.
/// </summary>
[JsonPropertyName("timestamp")]
public DateTime Timestamp { get ; set ; }
/// <summary>
/// Gets or sets the Version number of the plugin.
/// </summary>
[JsonPropertyName("version")]
public string Version { get ; set ; }
/// <summary>
/// Gets or sets a value indicating the operational status of this plugin.
/// </summary>
[JsonPropertyName("status")]
public PluginStatus Status { get ; set ; }
/// <summary>
/// Gets or sets a value indicating whether this plugin should automatically update.
/// </summary>
[JsonPropertyName("autoUpdate")]
public bool AutoUpdate { get ; set ; } = true ; // DO NOT MOVE THIS INTO THE CONSTRUCTOR.
/// <summary>
/// Gets or sets the ImagePath
/// Gets or sets a value indicating whether this plugin has an image.
/// Image must be located in the local plugin folder.
/// </summary>
[JsonPropertyName("imagePath")]
public string? ImagePath { get ; set ; }
/// <summary>
/// Gets or sets the collection of assemblies that should be loaded.
/// Paths are considered relative to the plugin folder.
/// </summary>
[JsonPropertyName("assemblies")]
public IReadOnlyList < string > Assemblies { get ; set ; }
}
}