From 84af205572e6ab9ca3e10f6de33cbce278e01335 Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Tue, 24 Jul 2012 10:54:34 -0400 Subject: Added new api handlers to get plugin information --- MediaBrowser.Common/Plugins/BasePlugin.cs | 88 ++++++++++++++++++++++++------- 1 file changed, 68 insertions(+), 20 deletions(-) (limited to 'MediaBrowser.Common/Plugins/BasePlugin.cs') diff --git a/MediaBrowser.Common/Plugins/BasePlugin.cs b/MediaBrowser.Common/Plugins/BasePlugin.cs index be72dabca..7fdb2583e 100644 --- a/MediaBrowser.Common/Plugins/BasePlugin.cs +++ b/MediaBrowser.Common/Plugins/BasePlugin.cs @@ -1,49 +1,97 @@ -using System.IO; +using System; +using System.IO; using MediaBrowser.Common.Json; +using MediaBrowser.Model.Plugins; namespace MediaBrowser.Common.Plugins { - public abstract class BasePlugin : IPlugin + /// + /// Provides a BasePlugin with generics, allowing for strongly typed configuration access. + /// + public abstract class BaseGenericPlugin : BasePlugin where TConfigurationType : BasePluginConfiguration, new() { + public new TConfigurationType Configuration + { + get + { + return base.Configuration as TConfigurationType; + } + set + { + base.Configuration = value; + } + } + + public override void ReloadConfiguration() + { + if (!File.Exists(ConfigurationPath)) + { + Configuration = new TConfigurationType(); + } + else + { + Configuration = JsonSerializer.DeserializeFromFile(ConfigurationPath); + Configuration.DateLastModified = File.GetLastWriteTime(ConfigurationPath); + } + } + } + + /// + /// Provides a common base class for all plugins + /// + public abstract class BasePlugin + { + public abstract string Name { get; } public string Path { get; set; } - public TConfigurationType Configuration { get; private set; } + public Version Version { get; set; } - private string ConfigurationPath + public BasePluginConfiguration Configuration { get; protected set; } + + protected string ConfigurationPath { get { return System.IO.Path.Combine(Path, "config.js"); } } - - public void Init() - { - Configuration = GetConfiguration(); - if (Configuration.Enabled) + public bool Enabled + { + get { - InitInternal(); + return Configuration.Enabled; } } - protected abstract void InitInternal(); + public DateTime ConfigurationDateLastModified + { + get + { + return Configuration.DateLastModified; + } + } - private TConfigurationType GetConfiguration() + /// + /// Returns true or false indicating if the plugin should be downloaded and run within the UI. + /// + public virtual bool DownloadToUI { - if (!File.Exists(ConfigurationPath)) + get { - return new TConfigurationType(); + return false; } + } - return JsonSerializer.DeserializeFromFile(ConfigurationPath); + public abstract void ReloadConfiguration(); + + public virtual void InitInServer() + { } - } - public interface IPlugin - { - string Path { get; set; } + public virtual void InitInUI() + { + } - void Init(); } } -- cgit v1.2.3