jellyfin/Emby.Server.Implementations/ServerApplicationPaths.cs

265 lines
7.2 KiB
C#
Raw Normal View History

2017-02-20 13:50:58 -07:00
using System;
using System.IO;
using Emby.Server.Implementations.AppBase;
2013-02-24 14:53:54 -07:00
using MediaBrowser.Controller;
2013-02-20 18:33:05 -07:00
2017-02-20 13:50:58 -07:00
namespace Emby.Server.Implementations
2013-02-20 18:33:05 -07:00
{
/// <summary>
/// Extends BaseApplicationPaths to add paths that are only applicable on the server
/// </summary>
2013-02-24 14:53:54 -07:00
public class ServerApplicationPaths : BaseApplicationPaths, IServerApplicationPaths
2013-02-20 18:33:05 -07:00
{
2013-09-20 18:04:14 -07:00
/// <summary>
/// Initializes a new instance of the <see cref="BaseApplicationPaths" /> class.
/// </summary>
2019-01-05 11:12:05 -07:00
public ServerApplicationPaths(
string programDataPath,
string appFolderPath,
string applicationResourcesPath,
string logDirectoryPath = null,
string configurationDirectoryPath = null)
: base(programDataPath, appFolderPath, logDirectoryPath, configurationDirectoryPath)
2013-09-20 18:04:14 -07:00
{
ApplicationResourcesPath = applicationResourcesPath;
2013-09-20 18:04:14 -07:00
}
public string ApplicationResourcesPath { get; private set; }
2013-02-20 18:33:05 -07:00
/// <summary>
/// Gets the path to the base root media directory
/// </summary>
/// <value>The root folder path.</value>
public string RootFolderPath
{
get
{
2013-06-04 09:48:23 -07:00
return Path.Combine(ProgramDataPath, "root");
2013-02-20 18:33:05 -07:00
}
}
/// <summary>
/// Gets the path to the default user view directory. Used if no specific user view is defined.
/// </summary>
/// <value>The default user views path.</value>
public string DefaultUserViewsPath
{
get
{
2013-06-04 09:48:23 -07:00
return Path.Combine(RootFolderPath, "default");
2013-02-20 18:33:05 -07:00
}
}
/// <summary>
/// Gets the path to localization data.
/// </summary>
/// <value>The localization path.</value>
public string LocalizationPath
{
get
{
2013-06-04 09:48:23 -07:00
return Path.Combine(ProgramDataPath, "localization");
2013-02-20 18:33:05 -07:00
}
}
/// <summary>
/// Gets the path to the People directory
/// </summary>
/// <value>The people path.</value>
public string PeoplePath
{
get
{
2018-09-12 10:26:21 -07:00
return Path.Combine(InternalMetadataPath, "People");
2013-02-20 18:33:05 -07:00
}
}
2016-08-17 22:56:10 -07:00
public string ArtistsPath
{
get
{
2018-09-12 10:26:21 -07:00
return Path.Combine(InternalMetadataPath, "artists");
2016-08-17 22:56:10 -07:00
}
}
2013-02-20 18:33:05 -07:00
/// <summary>
/// Gets the path to the Genre directory
/// </summary>
/// <value>The genre path.</value>
public string GenrePath
{
get
{
2018-09-12 10:26:21 -07:00
return Path.Combine(InternalMetadataPath, "Genre");
2013-02-20 18:33:05 -07:00
}
}
2013-06-10 20:31:00 -07:00
/// <summary>
/// Gets the path to the Genre directory
/// </summary>
/// <value>The genre path.</value>
public string MusicGenrePath
{
get
{
2018-09-12 10:26:21 -07:00
return Path.Combine(InternalMetadataPath, "MusicGenre");
2013-06-10 20:31:00 -07:00
}
}
2013-09-20 18:04:14 -07:00
2013-02-20 18:33:05 -07:00
/// <summary>
/// Gets the path to the Studio directory
/// </summary>
/// <value>The studio path.</value>
public string StudioPath
{
get
{
2018-09-12 10:26:21 -07:00
return Path.Combine(InternalMetadataPath, "Studio");
2013-02-20 18:33:05 -07:00
}
}
/// <summary>
/// Gets the path to the Year directory
/// </summary>
/// <value>The year path.</value>
public string YearPath
{
get
{
2018-09-12 10:26:21 -07:00
return Path.Combine(InternalMetadataPath, "Year");
2013-02-20 18:33:05 -07:00
}
}
/// <summary>
/// Gets the path to the General IBN directory
/// </summary>
/// <value>The general path.</value>
public string GeneralPath
{
get
{
2018-09-12 10:26:21 -07:00
return Path.Combine(InternalMetadataPath, "general");
2013-02-20 18:33:05 -07:00
}
}
/// <summary>
/// Gets the path to the Ratings IBN directory
/// </summary>
/// <value>The ratings path.</value>
public string RatingsPath
{
get
{
2018-09-12 10:26:21 -07:00
return Path.Combine(InternalMetadataPath, "ratings");
2013-02-20 18:33:05 -07:00
}
}
2013-05-02 07:30:38 -07:00
/// <summary>
/// Gets the media info images path.
/// </summary>
/// <value>The media info images path.</value>
public string MediaInfoImagesPath
{
get
{
2018-09-12 10:26:21 -07:00
return Path.Combine(InternalMetadataPath, "mediainfo");
2013-05-02 07:30:38 -07:00
}
}
2013-02-20 18:33:05 -07:00
/// <summary>
/// Gets the path to the user configuration directory
/// </summary>
/// <value>The user configuration directory path.</value>
public string UserConfigurationDirectoryPath
{
get
{
2013-06-04 09:48:23 -07:00
return Path.Combine(ConfigurationDirectoryPath, "users");
2013-02-20 18:33:05 -07:00
}
}
2018-09-12 10:26:21 -07:00
private string _defaultTranscodingTempPath;
public string DefaultTranscodingTempPath
{
get
{
return _defaultTranscodingTempPath ?? (_defaultTranscodingTempPath = Path.Combine(ProgramDataPath, "transcoding-temp"));
}
}
private string _transcodingTempPath;
public string TranscodingTempPath
2013-02-20 18:33:05 -07:00
{
get
{
2018-09-12 10:26:21 -07:00
return _transcodingTempPath ?? (_transcodingTempPath = DefaultTranscodingTempPath);
}
set
{
_transcodingTempPath = value;
2013-02-20 18:33:05 -07:00
}
}
public string GetTranscodingTempPath()
{
var path = TranscodingTempPath;
2018-09-12 10:26:21 -07:00
if (!string.Equals(path, DefaultTranscodingTempPath, StringComparison.OrdinalIgnoreCase))
{
2018-09-12 10:26:21 -07:00
try
{
Directory.CreateDirectory(path);
var testPath = Path.Combine(path, Guid.NewGuid().ToString());
Directory.CreateDirectory(testPath);
Directory.Delete(testPath);
return path;
}
catch
{
}
}
2018-09-12 10:26:21 -07:00
path = DefaultTranscodingTempPath;
Directory.CreateDirectory(path);
return path;
}
2013-07-01 10:17:33 -07:00
/// <summary>
/// Gets the game genre path.
/// </summary>
/// <value>The game genre path.</value>
public string GameGenrePath
{
get
{
2018-09-12 10:26:21 -07:00
return Path.Combine(InternalMetadataPath, "GameGenre");
2013-07-01 10:17:33 -07:00
}
}
2014-02-08 13:02:35 -07:00
2014-03-25 14:13:55 -07:00
private string _internalMetadataPath;
2014-02-08 13:02:35 -07:00
public string InternalMetadataPath
{
get
{
2014-03-25 14:13:55 -07:00
return _internalMetadataPath ?? (_internalMetadataPath = Path.Combine(DataPath, "metadata"));
}
set
{
_internalMetadataPath = value;
2014-02-08 13:02:35 -07:00
}
}
2018-09-12 10:26:21 -07:00
private const string _virtualInternalMetadataPath = "%MetadataPath%";
public string VirtualInternalMetadataPath
{
get
{
return _virtualInternalMetadataPath;
}
}
2013-02-20 18:33:05 -07:00
}
}