Slight re-work of ApplicationPaths so that we can have inherited versions for the UI and Server

pull/15/head
LukePulverenti Luke Pulverenti luke pulverenti 12 years ago
parent 95c9a9b04e
commit bfa6231d5f

@ -208,7 +208,7 @@ namespace MediaBrowser.Api
{
if (_FFMpegDirectory == null)
{
_FFMpegDirectory = System.IO.Path.Combine(ApplicationPaths.ProgramDataPath, "ffmpeg");
_FFMpegDirectory = System.IO.Path.Combine(Kernel.Instance.ApplicationPaths.ProgramDataPath, "ffmpeg");
if (!Directory.Exists(_FFMpegDirectory))
{

@ -174,7 +174,7 @@ namespace MediaBrowser.Api.HttpHandlers
process.StartInfo = startInfo;
// FFMpeg writes debug/error info to stderr. This is useful when debugging so let's put it in the log directory.
FileStream logStream = new FileStream(Path.Combine(ApplicationPaths.LogDirectoryPath, "ffmpeg-" + Guid.NewGuid().ToString() + ".txt"), FileMode.Create);
FileStream logStream = new FileStream(Path.Combine(Kernel.Instance.ApplicationPaths.LogDirectoryPath, "ffmpeg-" + Guid.NewGuid().ToString() + ".txt"), FileMode.Create);
try
{

@ -1,299 +0,0 @@
using System.Configuration;
using System.IO;
using System.Reflection;
namespace MediaBrowser.Common.Configuration
{
public static class ApplicationPaths
{
private static string _programDataPath;
/// <summary>
/// Gets the path to the program data folder
/// </summary>
public static string ProgramDataPath
{
get
{
if (_programDataPath == null)
{
_programDataPath = GetProgramDataPath();
}
return _programDataPath;
}
}
private static string _pluginsPath;
/// <summary>
/// Gets the path to the plugin directory
/// </summary>
public static string PluginsPath
{
get
{
if (_pluginsPath == null)
{
_pluginsPath = Path.Combine(ProgramDataPath, "plugins");
if (!Directory.Exists(_pluginsPath))
{
Directory.CreateDirectory(_pluginsPath);
}
}
return _pluginsPath;
}
}
private static string _configurationPath;
/// <summary>
/// Gets the path to the application configuration root directory
/// </summary>
public static string ConfigurationPath
{
get
{
if (_configurationPath == null)
{
_configurationPath = Path.Combine(ProgramDataPath, "config");
if (!Directory.Exists(_configurationPath))
{
Directory.CreateDirectory(_configurationPath);
}
}
return _configurationPath;
}
}
private static string _systemConfigurationPath;
/// <summary>
/// Gets the path to the system configuration directory
/// </summary>
public static string SystemConfigurationPath
{
get
{
if (_systemConfigurationPath == null)
{
_systemConfigurationPath = Path.Combine(ConfigurationPath, "system");
if (!Directory.Exists(_systemConfigurationPath))
{
Directory.CreateDirectory(_systemConfigurationPath);
}
}
return _systemConfigurationPath;
}
}
private static string _userConfigurationPath;
/// <summary>
/// Gets the path to the user configuration directory
/// </summary>
public static string UserConfigurationPath
{
get
{
if (_userConfigurationPath == null)
{
_userConfigurationPath = Path.Combine(ConfigurationPath, "user");
if (!Directory.Exists(_userConfigurationPath))
{
Directory.CreateDirectory(_userConfigurationPath);
}
}
return _userConfigurationPath;
}
}
private static string _deviceConfigurationPath;
/// <summary>
/// Gets the path to the device configuration directory
/// </summary>
public static string DeviceConfigurationPath
{
get
{
if (_deviceConfigurationPath == null)
{
_deviceConfigurationPath = Path.Combine(ConfigurationPath, "device");
if (!Directory.Exists(_deviceConfigurationPath))
{
Directory.CreateDirectory(_deviceConfigurationPath);
}
}
return _deviceConfigurationPath;
}
}
private static string _logDirectoryPath;
/// <summary>
/// Gets the path to the log directory
/// </summary>
public static string LogDirectoryPath
{
get
{
if (_logDirectoryPath == null)
{
_logDirectoryPath = Path.Combine(ProgramDataPath, "logs");
if (!Directory.Exists(_logDirectoryPath))
{
Directory.CreateDirectory(_logDirectoryPath);
}
}
return _logDirectoryPath;
}
}
private static string _rootFolderPath;
/// <summary>
/// Gets the path to the root media directory
/// </summary>
public static string RootFolderPath
{
get
{
if (_rootFolderPath == null)
{
_rootFolderPath = Path.Combine(ProgramDataPath, "root");
if (!Directory.Exists(_rootFolderPath))
{
Directory.CreateDirectory(_rootFolderPath);
}
}
return _rootFolderPath;
}
}
private static string _ibnPath;
/// <summary>
/// Gets the path to the Images By Name directory
/// </summary>
public static string ImagesByNamePath
{
get
{
if (_ibnPath == null)
{
_ibnPath = Path.Combine(ProgramDataPath, "ImagesByName");
if (!Directory.Exists(_ibnPath))
{
Directory.CreateDirectory(_ibnPath);
}
}
return _ibnPath;
}
}
private static string _PeoplePath;
/// <summary>
/// Gets the path to the People directory
/// </summary>
public static string PeoplePath
{
get
{
if (_PeoplePath == null)
{
_PeoplePath = Path.Combine(ImagesByNamePath, "People");
if (!Directory.Exists(_PeoplePath))
{
Directory.CreateDirectory(_PeoplePath);
}
}
return _PeoplePath;
}
}
private static string _GenrePath;
/// <summary>
/// Gets the path to the Genre directory
/// </summary>
public static string GenrePath
{
get
{
if (_GenrePath == null)
{
_GenrePath = Path.Combine(ImagesByNamePath, "Genre");
if (!Directory.Exists(_GenrePath))
{
Directory.CreateDirectory(_GenrePath);
}
}
return _GenrePath;
}
}
private static string _StudioPath;
/// <summary>
/// Gets the path to the Studio directory
/// </summary>
public static string StudioPath
{
get
{
if (_StudioPath == null)
{
_StudioPath = Path.Combine(ImagesByNamePath, "Studio");
if (!Directory.Exists(_StudioPath))
{
Directory.CreateDirectory(_StudioPath);
}
}
return _StudioPath;
}
}
private static string _yearPath;
/// <summary>
/// Gets the path to the Year directory
/// </summary>
public static string YearPath
{
get
{
if (_yearPath == null)
{
_yearPath = Path.Combine(ImagesByNamePath, "Year");
if (!Directory.Exists(_yearPath))
{
Directory.CreateDirectory(_yearPath);
}
}
return _yearPath;
}
}
/// <summary>
/// Gets the path to the application's ProgramDataFolder
/// </summary>
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;
}
}
}

@ -0,0 +1,133 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Configuration;
using System.Reflection;
namespace MediaBrowser.Common.Configuration
{
public abstract class BaseApplicationPaths
{
private string _programDataPath;
/// <summary>
/// Gets the path to the program data folder
/// </summary>
public string ProgramDataPath
{
get
{
if (_programDataPath == null)
{
_programDataPath = GetProgramDataPath();
}
return _programDataPath;
}
}
private string _pluginsPath;
/// <summary>
/// Gets the path to the plugin directory
/// </summary>
public string PluginsPath
{
get
{
if (_pluginsPath == null)
{
_pluginsPath = Path.Combine(ProgramDataPath, "plugins");
if (!Directory.Exists(_pluginsPath))
{
Directory.CreateDirectory(_pluginsPath);
}
}
return _pluginsPath;
}
}
private string _logDirectoryPath;
/// <summary>
/// Gets the path to the log directory
/// </summary>
public string LogDirectoryPath
{
get
{
if (_logDirectoryPath == null)
{
_logDirectoryPath = Path.Combine(ProgramDataPath, "logs");
if (!Directory.Exists(_logDirectoryPath))
{
Directory.CreateDirectory(_logDirectoryPath);
}
}
return _logDirectoryPath;
}
}
private string _configurationDirectoryPath;
/// <summary>
/// Gets the path to the application configuration root directory
/// </summary>
public string ConfigurationDirectoryPath
{
get
{
if (_configurationDirectoryPath == null)
{
_configurationDirectoryPath = Path.Combine(ProgramDataPath, "config");
if (!Directory.Exists(_configurationDirectoryPath))
{
Directory.CreateDirectory(_configurationDirectoryPath);
}
}
return _configurationDirectoryPath;
}
}
private string _systemConfigurationFilePath;
/// <summary>
/// Gets the path to the system configuration file
/// </summary>
public string SystemConfigurationFilePath
{
get
{
if (_systemConfigurationFilePath == null)
{
_systemConfigurationFilePath = Path.Combine(ConfigurationDirectoryPath, "system.xml");
}
return _systemConfigurationFilePath;
}
}
/// <summary>
/// Gets the path to the application's ProgramDataFolder
/// </summary>
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;
}
}
}

@ -18,14 +18,17 @@ namespace MediaBrowser.Common.Kernel
/// <summary>
/// Represents a shared base kernel for both the UI and server apps
/// </summary>
public abstract class BaseKernel<TConfigurationType> : IDisposable
public abstract class BaseKernel<TConfigurationType, TApplicationPathsType> : IDisposable
where TConfigurationType : BaseApplicationConfiguration, new()
where TApplicationPathsType : BaseApplicationPaths, new()
{
/// <summary>
/// Gets the current configuration
/// </summary>
public TConfigurationType Configuration { get; private set; }
public TApplicationPathsType ApplicationPaths { get; private set; }
/// <summary>
/// Gets the list of currently loaded plugins
/// </summary>
@ -45,7 +48,7 @@ namespace MediaBrowser.Common.Kernel
public BaseKernel()
{
ApplicationPaths = new TApplicationPathsType();
}
public virtual void Init(IProgress<TaskProgress> progress)
@ -149,13 +152,13 @@ namespace MediaBrowser.Common.Kernel
//Configuration information for anything other than server-specific configuration will have to come via the API... -ebr
// Deserialize config
if (!File.Exists(ApplicationPaths.ConfigurationPath))
if (!File.Exists(ApplicationPaths.SystemConfigurationFilePath))
{
Configuration = new TConfigurationType();
}
else
{
Configuration = JsonSerializer.DeserializeFromFile<TConfigurationType>(ApplicationPaths.ConfigurationPath);
Configuration = XmlSerializer.DeserializeFromFile<TConfigurationType>(ApplicationPaths.SystemConfigurationFilePath);
}
Logger.LoggerInstance.LogSeverity = Configuration.LogSeverity;

@ -61,8 +61,8 @@
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>
<Compile Include="Configuration\ApplicationPaths.cs" />
<Compile Include="Configuration\BaseApplicationConfiguration.cs" />
<Compile Include="Configuration\BaseApplicationPaths.cs" />
<Compile Include="Drawing\DrawingUtils.cs" />
<Compile Include="Events\GenericItemEventArgs.cs" />
<Compile Include="Net\Handlers\StaticFileHandler.cs" />

@ -1,5 +1,4 @@
using System;
using System.IO;
using System.IO;
namespace MediaBrowser.Common.Serialization
{
@ -10,22 +9,14 @@ namespace MediaBrowser.Common.Serialization
{
public static void SerializeToStream<T>(T obj, Stream stream)
{
ServiceStack.Text.XmlSerializer.SerializeToStream(obj, stream);
GetSerializer<T>().Serialize(stream, obj);
}
public static void SerializeToFile<T>(T obj, string file)
{
using (StreamWriter streamWriter = new StreamWriter(file))
using (FileStream stream = new FileStream(file, FileMode.Create))
{
ServiceStack.Text.XmlSerializer.SerializeToWriter<T>(obj, streamWriter);
}
}
public static object DeserializeFromFile(Type type, string file)
{
using (Stream stream = File.OpenRead(file))
{
return ServiceStack.Text.XmlSerializer.DeserializeFromStream(type, stream);
GetSerializer<T>().Serialize(stream, obj);
}
}
@ -33,18 +24,18 @@ namespace MediaBrowser.Common.Serialization
{
using (Stream stream = File.OpenRead(file))
{
return ServiceStack.Text.XmlSerializer.DeserializeFromStream<T>(stream);
return (T)GetSerializer<T>().Deserialize(stream);
}
}
public static T DeserializeFromStream<T>(Stream stream)
{
return ServiceStack.Text.XmlSerializer.DeserializeFromStream<T>(stream);
return (T)GetSerializer<T>().Deserialize(stream);
}
public static T DeserializeFromString<T>(string data)
private static System.Xml.Serialization.XmlSerializer GetSerializer<T>()
{
return ServiceStack.Text.XmlSerializer.DeserializeFromString<T>(data);
return new System.Xml.Serialization.XmlSerializer(typeof(T));
}
}
}

@ -0,0 +1,154 @@
using System.IO;
using MediaBrowser.Common.Configuration;
namespace MediaBrowser.Controller.Configuration
{
public class ServerApplicationPaths : BaseApplicationPaths
{
private string _rootFolderPath;
/// <summary>
/// Gets the path to the root media directory
/// </summary>
public string RootFolderPath
{
get
{
if (_rootFolderPath == null)
{
_rootFolderPath = Path.Combine(ProgramDataPath, "root");
if (!Directory.Exists(_rootFolderPath))
{
Directory.CreateDirectory(_rootFolderPath);
}
}
return _rootFolderPath;
}
}
private string _ibnPath;
/// <summary>
/// Gets the path to the Images By Name directory
/// </summary>
public string ImagesByNamePath
{
get
{
if (_ibnPath == null)
{
_ibnPath = Path.Combine(ProgramDataPath, "ImagesByName");
if (!Directory.Exists(_ibnPath))
{
Directory.CreateDirectory(_ibnPath);
}
}
return _ibnPath;
}
}
private string _PeoplePath;
/// <summary>
/// Gets the path to the People directory
/// </summary>
public string PeoplePath
{
get
{
if (_PeoplePath == null)
{
_PeoplePath = Path.Combine(ImagesByNamePath, "People");
if (!Directory.Exists(_PeoplePath))
{
Directory.CreateDirectory(_PeoplePath);
}
}
return _PeoplePath;
}
}
private string _GenrePath;
/// <summary>
/// Gets the path to the Genre directory
/// </summary>
public string GenrePath
{
get
{
if (_GenrePath == null)
{
_GenrePath = Path.Combine(ImagesByNamePath, "Genre");
if (!Directory.Exists(_GenrePath))
{
Directory.CreateDirectory(_GenrePath);
}
}
return _GenrePath;
}
}
private string _StudioPath;
/// <summary>
/// Gets the path to the Studio directory
/// </summary>
public string StudioPath
{
get
{
if (_StudioPath == null)
{
_StudioPath = Path.Combine(ImagesByNamePath, "Studio");
if (!Directory.Exists(_StudioPath))
{
Directory.CreateDirectory(_StudioPath);
}
}
return _StudioPath;
}
}
private string _yearPath;
/// <summary>
/// Gets the path to the Year directory
/// </summary>
public string YearPath
{
get
{
if (_yearPath == null)
{
_yearPath = Path.Combine(ImagesByNamePath, "Year");
if (!Directory.Exists(_yearPath))
{
Directory.CreateDirectory(_yearPath);
}
}
return _yearPath;
}
}
private string _userConfigurationDirectoryPath;
/// <summary>
/// Gets the path to the user configuration directory
/// </summary>
public string UserConfigurationDirectoryPath
{
get
{
if (_userConfigurationDirectoryPath == null)
{
_userConfigurationDirectoryPath = Path.Combine(ConfigurationDirectoryPath, "user");
if (!Directory.Exists(_userConfigurationDirectoryPath))
{
Directory.CreateDirectory(_userConfigurationDirectoryPath);
}
}
return _userConfigurationDirectoryPath;
}
}
}
}

@ -17,7 +17,7 @@ using MediaBrowser.Model.Progress;
namespace MediaBrowser.Controller
{
public class Kernel : BaseKernel<ServerConfiguration>
public class Kernel : BaseKernel<ServerConfiguration, ServerApplicationPaths>
{
public static Kernel Instance { get; private set; }
@ -43,7 +43,7 @@ namespace MediaBrowser.Controller
public IEnumerable<IBaseItemResolver> EntityResolvers { get; private set; }
/// <summary>
/// Creates a kernal based on a Data path, which is akin to our current programdata path
/// Creates a kernel based on a Data path, which is akin to our current programdata path
/// </summary>
public Kernel()
: base()

@ -305,7 +305,7 @@ namespace MediaBrowser.Controller.Library
/// </summary>
public Person GetPerson(string name)
{
string path = Path.Combine(ApplicationPaths.PeoplePath, name);
string path = Path.Combine(Kernel.Instance.ApplicationPaths.PeoplePath, name);
return GetImagesByNameItem<Person>(path, name);
}
@ -315,7 +315,7 @@ namespace MediaBrowser.Controller.Library
/// </summary>
public Studio GetStudio(string name)
{
string path = Path.Combine(ApplicationPaths.StudioPath, name);
string path = Path.Combine(Kernel.Instance.ApplicationPaths.StudioPath, name);
return GetImagesByNameItem<Studio>(path, name);
}
@ -325,7 +325,7 @@ namespace MediaBrowser.Controller.Library
/// </summary>
public Genre GetGenre(string name)
{
string path = Path.Combine(ApplicationPaths.GenrePath, name);
string path = Path.Combine(Kernel.Instance.ApplicationPaths.GenrePath, name);
return GetImagesByNameItem<Genre>(path, name);
}
@ -335,7 +335,7 @@ namespace MediaBrowser.Controller.Library
/// </summary>
public Year GetYear(int value)
{
string path = Path.Combine(ApplicationPaths.YearPath, value.ToString());
string path = Path.Combine(Kernel.Instance.ApplicationPaths.YearPath, value.ToString());
return GetImagesByNameItem<Year>(path, value.ToString());
}

@ -49,6 +49,7 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Configuration\ServerApplicationPaths.cs" />
<Compile Include="Configuration\ServerConfiguration.cs" />
<Compile Include="Events\ItemResolveEventArgs.cs" />
<Compile Include="IO\DirectoryWatchers.cs" />

Loading…
Cancel
Save