using MediaBrowser.Common.Configuration; using System.IO; namespace MediaBrowser.Common.Implementations { /// /// 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 applicationPath) { ProgramDataPath = programDataPath; ApplicationPath = applicationPath; } public string ApplicationPath { get; private set; } public string ProgramDataPath { get; private set; } /// /// Gets the path to the system folder /// public string ProgramSystemPath { get { return Path.GetDirectoryName(ApplicationPath); } } /// /// 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"); Directory.CreateDirectory(_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"); Directory.CreateDirectory(_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"); } } } }