diff options
| author | LukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com> | 2012-07-24 10:54:34 -0400 |
|---|---|---|
| committer | LukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com> | 2012-07-24 10:54:34 -0400 |
| commit | 84af205572e6ab9ca3e10f6de33cbce278e01335 (patch) | |
| tree | 0cb89ab3a9d3ff67f85894096e592a959c3ff9b0 /MediaBrowser.Common/Plugins/BasePlugin.cs | |
| parent | 6c7175e33d258ff2e65735f68cb05f110a8d2306 (diff) | |
Added new api handlers to get plugin information
Diffstat (limited to 'MediaBrowser.Common/Plugins/BasePlugin.cs')
| -rw-r--r-- | MediaBrowser.Common/Plugins/BasePlugin.cs | 88 |
1 files changed, 68 insertions, 20 deletions
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<TConfigurationType> : IPlugin
+ /// <summary>
+ /// Provides a BasePlugin with generics, allowing for strongly typed configuration access.
+ /// </summary>
+ public abstract class BaseGenericPlugin<TConfigurationType> : 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<TConfigurationType>(ConfigurationPath);
+ Configuration.DateLastModified = File.GetLastWriteTime(ConfigurationPath);
+ }
+ }
+ }
+
+ /// <summary>
+ /// Provides a common base class for all plugins
+ /// </summary>
+ 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()
+ /// <summary>
+ /// Returns true or false indicating if the plugin should be downloaded and run within the UI.
+ /// </summary>
+ public virtual bool DownloadToUI
{
- if (!File.Exists(ConfigurationPath))
+ get
{
- return new TConfigurationType();
+ return false;
}
+ }
- return JsonSerializer.DeserializeFromFile<TConfigurationType>(ConfigurationPath);
+ public abstract void ReloadConfiguration();
+
+ public virtual void InitInServer()
+ {
}
- }
- public interface IPlugin
- {
- string Path { get; set; }
+ public virtual void InitInUI()
+ {
+ }
- void Init();
}
}
|
