From 5d55b36487b25b2efaf6923a3c069f4b0b59a449 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 20 Feb 2017 15:50:58 -0500 Subject: make more classes portable --- .../AppBase/BaseApplicationPaths.cs | 178 +++++++++++++++++++++ 1 file changed, 178 insertions(+) create mode 100644 Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs (limited to 'Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs') diff --git a/Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs b/Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs new file mode 100644 index 000000000..54d1d5302 --- /dev/null +++ b/Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs @@ -0,0 +1,178 @@ +using System; +using System.IO; +using MediaBrowser.Common.Configuration; + +namespace Emby.Server.Implementations.AppBase +{ + /// + /// Provides a base class to hold common application paths used by both the Ui and Server. + /// This can be subclassed to add application-specific paths. + /// + public abstract class BaseApplicationPaths : IApplicationPaths + { + /// + /// Initializes a new instance of the class. + /// + protected BaseApplicationPaths(string programDataPath, string appFolderPath, Action createDirectoryFn) + { + ProgramDataPath = programDataPath; + ProgramSystemPath = appFolderPath; + CreateDirectoryFn = createDirectoryFn; + } + + protected Action CreateDirectoryFn; + + public string ProgramDataPath { get; private set; } + + /// + /// Gets the path to the system folder + /// + public string ProgramSystemPath { get; private set; } + + /// + /// The _data directory + /// + private string _dataDirectory; + /// + /// Gets the folder path to the data directory + /// + /// The data directory. + public string DataPath + { + get + { + if (_dataDirectory == null) + { + _dataDirectory = Path.Combine(ProgramDataPath, "data"); + + CreateDirectoryFn(_dataDirectory); + } + + return _dataDirectory; + } + } + + /// + /// Gets the image cache path. + /// + /// The image cache path. + public string ImageCachePath + { + get + { + return Path.Combine(CachePath, "images"); + } + } + + /// + /// Gets the path to the plugin directory + /// + /// The plugins path. + public string PluginsPath + { + get + { + return Path.Combine(ProgramDataPath, "plugins"); + } + } + + /// + /// Gets the path to the plugin configurations directory + /// + /// The plugin configurations path. + public string PluginConfigurationsPath + { + get + { + return Path.Combine(PluginsPath, "configurations"); + } + } + + /// + /// Gets the path to where temporary update files will be stored + /// + /// The plugin configurations path. + public string TempUpdatePath + { + get + { + return Path.Combine(ProgramDataPath, "updates"); + } + } + + /// + /// Gets the path to the log directory + /// + /// The log directory path. + public string LogDirectoryPath + { + get + { + return Path.Combine(ProgramDataPath, "logs"); + } + } + + /// + /// Gets the path to the application configuration root directory + /// + /// The configuration directory path. + public string ConfigurationDirectoryPath + { + get + { + return Path.Combine(ProgramDataPath, "config"); + } + } + + /// + /// Gets the path to the system configuration file + /// + /// The system configuration file path. + public string SystemConfigurationFilePath + { + get + { + return Path.Combine(ConfigurationDirectoryPath, "system.xml"); + } + } + + /// + /// The _cache directory + /// + private string _cachePath; + /// + /// Gets the folder path to the cache directory + /// + /// The cache directory. + public string CachePath + { + get + { + if (string.IsNullOrEmpty(_cachePath)) + { + _cachePath = Path.Combine(ProgramDataPath, "cache"); + + CreateDirectoryFn(_cachePath); + } + + return _cachePath; + } + set + { + _cachePath = value; + } + } + + /// + /// Gets the folder path to the temp directory within the cache folder + /// + /// The temp directory. + public string TempDirectory + { + get + { + return Path.Combine(CachePath, "temp"); + } + } + } +} -- cgit v1.2.3