| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | #nullable disableusing System;using System.IO;using System.Reflection;using MediaBrowser.Model.Plugins;namespace MediaBrowser.Common.Plugins{    /// <summary>    /// Provides a common base class for all plugins.    /// </summary>    public abstract class BasePlugin : IPlugin, IPluginAssembly    {        /// <summary>        /// Gets the name of the plugin.        /// </summary>        /// <value>The name.</value>        public abstract string Name { get; }        /// <summary>        /// Gets the description.        /// </summary>        /// <value>The description.</value>        public virtual string Description => string.Empty;        /// <summary>        /// Gets the unique id.        /// </summary>        /// <value>The unique id.</value>        public virtual Guid Id { get; private set; }        /// <summary>        /// Gets the plugin version.        /// </summary>        /// <value>The version.</value>        public Version Version { get; private set; }        /// <summary>        /// Gets the path to the assembly file.        /// </summary>        /// <value>The assembly file path.</value>        public string AssemblyFilePath { get; private set; }        /// <summary>        /// Gets the full path to the data folder, where the plugin can store any miscellaneous files needed.        /// </summary>        /// <value>The data folder path.</value>        public string DataFolderPath { get; private set; }        /// <summary>        /// Gets a value indicating whether the plugin can be uninstalled.        /// </summary>        public bool CanUninstall => !Path.GetDirectoryName(AssemblyFilePath)            .Equals(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), StringComparison.Ordinal);        /// <summary>        /// Gets the plugin info.        /// </summary>        /// <returns>PluginInfo.</returns>        public virtual PluginInfo GetPluginInfo()        {            var info = new PluginInfo(                Name,                Version,                Description,                Id,                CanUninstall);            return info;        }        /// <summary>        /// Called just before the plugin is uninstalled from the server.        /// </summary>        public virtual void OnUninstalling()        {        }        /// <inheritdoc />        public void SetAttributes(string assemblyFilePath, string dataFolderPath, Version assemblyVersion)        {            AssemblyFilePath = assemblyFilePath;            DataFolderPath = dataFolderPath;            Version = assemblyVersion;        }        /// <inheritdoc />        public void SetId(Guid assemblyId)        {            Id = assemblyId;        }    }}
 |