| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324 | 
							- using MediaBrowser.Common.Configuration;
 
- using System;
 
- using System.Configuration;
 
- using System.IO;
 
- using System.Reflection;
 
- namespace MediaBrowser.Common.Implementations
 
- {
 
-     /// <summary>
 
-     /// 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.
 
-     /// </summary>
 
-     public abstract class BaseApplicationPaths : IApplicationPaths
 
-     {
 
-         /// <summary>
 
-         /// The _use debug path
 
-         /// </summary>
 
-         private readonly bool _useDebugPath;
 
-         /// <summary>
 
-         /// Initializes a new instance of the <see cref="BaseApplicationPaths" /> class.
 
-         /// </summary>
 
-         /// <param name="useDebugPath">if set to <c>true</c> [use debug paths].</param>
 
-         protected BaseApplicationPaths(bool useDebugPath)
 
-         {
 
-             _useDebugPath = useDebugPath;
 
-         }
 
-         /// <summary>
 
-         /// The _program data path
 
-         /// </summary>
 
-         private string _programDataPath;
 
-         /// <summary>
 
-         /// Gets the path to the program data folder
 
-         /// </summary>
 
-         /// <value>The program data path.</value>
 
-         public string ProgramDataPath
 
-         {
 
-             get
 
-             {
 
-                 return _programDataPath ?? (_programDataPath = GetProgramDataPath());
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// Gets the path to the system folder
 
-         /// </summary>
 
-         public string ProgramSystemPath { get { return Path.Combine(ProgramDataPath, "System"); } }
 
-         /// <summary>
 
-         /// The _data directory
 
-         /// </summary>
 
-         private string _dataDirectory;
 
-         /// <summary>
 
-         /// Gets the folder path to the data directory
 
-         /// </summary>
 
-         /// <value>The data directory.</value>
 
-         public string DataPath
 
-         {
 
-             get
 
-             {
 
-                 if (_dataDirectory == null)
 
-                 {
 
-                     _dataDirectory = Path.Combine(ProgramDataPath, "data");
 
-                     if (!Directory.Exists(_dataDirectory))
 
-                     {
 
-                         Directory.CreateDirectory(_dataDirectory);
 
-                     }
 
-                 }
 
-                 return _dataDirectory;
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// The _image cache path
 
-         /// </summary>
 
-         private string _imageCachePath;
 
-         /// <summary>
 
-         /// Gets the image cache path.
 
-         /// </summary>
 
-         /// <value>The image cache path.</value>
 
-         public string ImageCachePath
 
-         {
 
-             get
 
-             {
 
-                 if (_imageCachePath == null)
 
-                 {
 
-                     _imageCachePath = Path.Combine(CachePath, "images");
 
-                     if (!Directory.Exists(_imageCachePath))
 
-                     {
 
-                         Directory.CreateDirectory(_imageCachePath);
 
-                     }
 
-                 }
 
-                 return _imageCachePath;
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// The _plugins path
 
-         /// </summary>
 
-         private string _pluginsPath;
 
-         /// <summary>
 
-         /// Gets the path to the plugin directory
 
-         /// </summary>
 
-         /// <value>The plugins path.</value>
 
-         public string PluginsPath
 
-         {
 
-             get
 
-             {
 
-                 if (_pluginsPath == null)
 
-                 {
 
-                     _pluginsPath = Path.Combine(ProgramDataPath, "plugins");
 
-                     if (!Directory.Exists(_pluginsPath))
 
-                     {
 
-                         Directory.CreateDirectory(_pluginsPath);
 
-                     }
 
-                 }
 
-                 return _pluginsPath;
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// The _plugin configurations path
 
-         /// </summary>
 
-         private string _pluginConfigurationsPath;
 
-         /// <summary>
 
-         /// Gets the path to the plugin configurations directory
 
-         /// </summary>
 
-         /// <value>The plugin configurations path.</value>
 
-         public string PluginConfigurationsPath
 
-         {
 
-             get
 
-             {
 
-                 if (_pluginConfigurationsPath == null)
 
-                 {
 
-                     _pluginConfigurationsPath = Path.Combine(PluginsPath, "configurations");
 
-                     if (!Directory.Exists(_pluginConfigurationsPath))
 
-                     {
 
-                         Directory.CreateDirectory(_pluginConfigurationsPath);
 
-                     }
 
-                 }
 
-                 return _pluginConfigurationsPath;
 
-             }
 
-         }
 
-         private string _tempUpdatePath;
 
-         /// <summary>
 
-         /// Gets the path to where temporary update files will be stored
 
-         /// </summary>
 
-         /// <value>The plugin configurations path.</value>
 
-         public string TempUpdatePath
 
-         {
 
-             get
 
-             {
 
-                 if (_tempUpdatePath == null)
 
-                 {
 
-                     _tempUpdatePath = Path.Combine(ProgramDataPath, "Updates");
 
-                     if (!Directory.Exists(_tempUpdatePath))
 
-                     {
 
-                         Directory.CreateDirectory(_tempUpdatePath);
 
-                     }
 
-                 }
 
-                 return _tempUpdatePath;
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// The _log directory path
 
-         /// </summary>
 
-         private string _logDirectoryPath;
 
-         /// <summary>
 
-         /// Gets the path to the log directory
 
-         /// </summary>
 
-         /// <value>The log directory path.</value>
 
-         public string LogDirectoryPath
 
-         {
 
-             get
 
-             {
 
-                 if (_logDirectoryPath == null)
 
-                 {
 
-                     _logDirectoryPath = Path.Combine(ProgramDataPath, "logs");
 
-                     if (!Directory.Exists(_logDirectoryPath))
 
-                     {
 
-                         Directory.CreateDirectory(_logDirectoryPath);
 
-                     }
 
-                 }
 
-                 return _logDirectoryPath;
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// The _configuration directory path
 
-         /// </summary>
 
-         private string _configurationDirectoryPath;
 
-         /// <summary>
 
-         /// Gets the path to the application configuration root directory
 
-         /// </summary>
 
-         /// <value>The configuration directory path.</value>
 
-         public string ConfigurationDirectoryPath
 
-         {
 
-             get
 
-             {
 
-                 if (_configurationDirectoryPath == null)
 
-                 {
 
-                     _configurationDirectoryPath = Path.Combine(ProgramDataPath, "config");
 
-                     if (!Directory.Exists(_configurationDirectoryPath))
 
-                     {
 
-                         Directory.CreateDirectory(_configurationDirectoryPath);
 
-                     }
 
-                 }
 
-                 return _configurationDirectoryPath;
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// The _system configuration file path
 
-         /// </summary>
 
-         private string _systemConfigurationFilePath;
 
-         /// <summary>
 
-         /// Gets the path to the system configuration file
 
-         /// </summary>
 
-         /// <value>The system configuration file path.</value>
 
-         public string SystemConfigurationFilePath
 
-         {
 
-             get
 
-             {
 
-                 return _systemConfigurationFilePath ?? (_systemConfigurationFilePath = Path.Combine(ConfigurationDirectoryPath, "system.xml"));
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// The _cache directory
 
-         /// </summary>
 
-         private string _cachePath;
 
-         /// <summary>
 
-         /// Gets the folder path to the cache directory
 
-         /// </summary>
 
-         /// <value>The cache directory.</value>
 
-         public string CachePath
 
-         {
 
-             get
 
-             {
 
-                 if (_cachePath == null)
 
-                 {
 
-                     _cachePath = Path.Combine(ProgramDataPath, "cache");
 
-                     if (!Directory.Exists(_cachePath))
 
-                     {
 
-                         Directory.CreateDirectory(_cachePath);
 
-                     }
 
-                 }
 
-                 return _cachePath;
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// The _temp directory
 
-         /// </summary>
 
-         private string _tempDirectory;
 
-         /// <summary>
 
-         /// Gets the folder path to the temp directory within the cache folder
 
-         /// </summary>
 
-         /// <value>The temp directory.</value>
 
-         public string TempDirectory
 
-         {
 
-             get
 
-             {
 
-                 if (_tempDirectory == null)
 
-                 {
 
-                     _tempDirectory = Path.Combine(CachePath, "temp");
 
-                     if (!Directory.Exists(_tempDirectory))
 
-                     {
 
-                         Directory.CreateDirectory(_tempDirectory);
 
-                     }
 
-                 }
 
-                 return _tempDirectory;
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// Gets the path to the application's ProgramDataFolder
 
-         /// </summary>
 
-         /// <returns>System.String.</returns>
 
-         private string GetProgramDataPath()
 
-         {
 
-             var programDataPath = _useDebugPath ? ConfigurationManager.AppSettings["DebugProgramDataPath"] : Path.Combine(ConfigurationManager.AppSettings["ReleaseProgramDataPath"], ConfigurationManager.AppSettings["ProgramDataFolderName"]);
 
-             programDataPath = programDataPath.Replace("%ApplicationData%", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
 
-             // If it's a relative path, e.g. "..\"
 
-             if (!Path.IsPathRooted(programDataPath))
 
-             {
 
-                 var path = Assembly.GetExecutingAssembly().Location;
 
-                 path = Path.GetDirectoryName(path);
 
-                 if (string.IsNullOrEmpty(path))
 
-                 {
 
-                     throw new ApplicationException("Unable to determine running assembly location");
 
-                 }
 
-                 programDataPath = Path.Combine(path, programDataPath);
 
-                 programDataPath = Path.GetFullPath(programDataPath);
 
-             }
 
-             if (!Directory.Exists(programDataPath))
 
-             {
 
-                 Directory.CreateDirectory(programDataPath);
 
-             }
 
-             return programDataPath;
 
-         }
 
-     }
 
- }
 
 
  |