From 6e8bfb6d9b34e8aad876bdb21907ca686741e7cb Mon Sep 17 00:00:00 2001 From: ebr11 Eric Reed spam Date: Wed, 1 Aug 2012 23:13:44 -0400 Subject: Add ApplicationPaths class --- .../Configuration/ApplicationPaths.cs | 162 +++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 MediaBrowser.Common/Configuration/ApplicationPaths.cs (limited to 'MediaBrowser.Common/Configuration/ApplicationPaths.cs') diff --git a/MediaBrowser.Common/Configuration/ApplicationPaths.cs b/MediaBrowser.Common/Configuration/ApplicationPaths.cs new file mode 100644 index 000000000..1e1ecd85a --- /dev/null +++ b/MediaBrowser.Common/Configuration/ApplicationPaths.cs @@ -0,0 +1,162 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.IO; +using System.ComponentModel.Composition; +using System.ComponentModel.Composition.Hosting; +using System.Configuration; +using System.Reflection; + +namespace MediaBrowser.Common.Configuration +{ + public static class ApplicationPaths + { + private static string _programDataPath; + /// + /// Gets the path to the program data folder + /// + public static string ProgramDataPath + { + get + { + if (_programDataPath == null) + { + _programDataPath = GetProgramDataPath(); + InitDirectories(); //move this here so we don't have to check for existence on every directory reference + } + return _programDataPath; + } + } + + private static void InitDirectories() + { + if (!Directory.Exists(LogDirectoryPath)) + { + Directory.CreateDirectory(LogDirectoryPath); + } + if (!Directory.Exists(PluginsPath)) + { + Directory.CreateDirectory(PluginsPath); + } + if (!Directory.Exists(RootFolderPath)) + { + Directory.CreateDirectory(RootFolderPath); + } + if (!Directory.Exists(ConfigurationPath)) + { + Directory.CreateDirectory(ConfigurationPath); + Directory.CreateDirectory(SystemConfigurationPath); + Directory.CreateDirectory(DeviceConfigurationPath); + Directory.CreateDirectory(UserConfigurationPath); + } + + + } + + /// + /// Gets the path to the plugin directory + /// + public static string PluginsPath + { + get + { + return Path.Combine(ProgramDataPath, "plugins"); + } + } + + /// + /// Gets the path to the application configuration root directory + /// + public static string ConfigurationPath + { + get + { + return Path.Combine(ProgramDataPath, "config"); + } + } + + /// + /// Gets the path to the system configuration directory + /// + public static string SystemConfigurationPath + { + get + { + return Path.Combine(ConfigurationPath, "system"); + } + } + + /// + /// Gets the path to the user configuration directory + /// + public static string UserConfigurationPath + { + get + { + return Path.Combine(ConfigurationPath, "user"); + } + } + + /// + /// Gets the path to the device configuration directory + /// + public static string DeviceConfigurationPath + { + get + { + return Path.Combine(ConfigurationPath, "device"); + } + } + + /// + /// Gets the path to the log directory + /// + public static string LogDirectoryPath + { + get + { + return Path.Combine(ProgramDataPath, "logs"); + } + } + + /// + /// Gets the path to the root media directory + /// + public static string RootFolderPath + { + get + { + return Path.Combine(ProgramDataPath, "root"); + } + } + + /// + /// Gets the path to the application's ProgramDataFolder + /// + private static string GetProgramDataPath() + { + string programDataPath = ConfigurationManager.AppSettings["ProgramDataPath"]; + + // If it's a relative path, e.g. "..\" + if (!Path.IsPathRooted(programDataPath)) + { + string path = Assembly.GetExecutingAssembly().Location; + path = Path.GetDirectoryName(path); + + programDataPath = Path.Combine(path, programDataPath); + + programDataPath = Path.GetFullPath(programDataPath); + } + + if (!Directory.Exists(programDataPath)) + { + Directory.CreateDirectory(programDataPath); + } + + return programDataPath; + } + + } +} -- cgit v1.2.3