aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common/Plugins/BasePlugin.cs
diff options
context:
space:
mode:
authorLukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com>2012-07-24 10:54:34 -0400
committerLukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com>2012-07-24 10:54:34 -0400
commit84af205572e6ab9ca3e10f6de33cbce278e01335 (patch)
tree0cb89ab3a9d3ff67f85894096e592a959c3ff9b0 /MediaBrowser.Common/Plugins/BasePlugin.cs
parent6c7175e33d258ff2e65735f68cb05f110a8d2306 (diff)
Added new api handlers to get plugin information
Diffstat (limited to 'MediaBrowser.Common/Plugins/BasePlugin.cs')
-rw-r--r--MediaBrowser.Common/Plugins/BasePlugin.cs88
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();
}
}