using System.IO; using Emby.Common.Implementations; using MediaBrowser.Controller; namespace Emby.Server.Core { /// <summary> /// Extends BaseApplicationPaths to add paths that are only applicable on the server /// </summary> public class ServerApplicationPaths : BaseApplicationPaths, IServerApplicationPaths { /// <summary> /// Initializes a new instance of the <see cref="BaseApplicationPaths" /> class. /// </summary> public ServerApplicationPaths(string programDataPath, string appFolderPath, string applicationResourcesPath) : base(programDataPath, appFolderPath) { ApplicationResourcesPath = applicationResourcesPath; } public string ApplicationResourcesPath { get; private set; } /// <summary> /// Gets the path to the base root media directory /// </summary> /// <value>The root folder path.</value> public string RootFolderPath { get { return Path.Combine(ProgramDataPath, "root"); } } /// <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 { return Path.Combine(RootFolderPath, "default"); } } /// <summary> /// Gets the path to localization data. /// </summary> /// <value>The localization path.</value> public string LocalizationPath { get { return Path.Combine(ProgramDataPath, "localization"); } } /// <summary> /// The _ibn path /// </summary> private string _ibnPath; /// <summary> /// Gets the path to the Images By Name directory /// </summary> /// <value>The images by name path.</value> public string ItemsByNamePath { get { return _ibnPath ?? (_ibnPath = Path.Combine(ProgramDataPath, "ImagesByName")); } set { _ibnPath = value; } } /// <summary> /// Gets the path to the People directory /// </summary> /// <value>The people path.</value> public string PeoplePath { get { return Path.Combine(ItemsByNamePath, "People"); } } public string ArtistsPath { get { return Path.Combine(ItemsByNamePath, "artists"); } } /// <summary> /// Gets the path to the Genre directory /// </summary> /// <value>The genre path.</value> public string GenrePath { get { return Path.Combine(ItemsByNamePath, "Genre"); } } /// <summary> /// Gets the path to the Genre directory /// </summary> /// <value>The genre path.</value> public string MusicGenrePath { get { return Path.Combine(ItemsByNamePath, "MusicGenre"); } } /// <summary> /// Gets the path to the Studio directory /// </summary> /// <value>The studio path.</value> public string StudioPath { get { return Path.Combine(ItemsByNamePath, "Studio"); } } /// <summary> /// Gets the path to the Year directory /// </summary> /// <value>The year path.</value> public string YearPath { get { return Path.Combine(ItemsByNamePath, "Year"); } } /// <summary> /// Gets the path to the General IBN directory /// </summary> /// <value>The general path.</value> public string GeneralPath { get { return Path.Combine(ItemsByNamePath, "general"); } } /// <summary> /// Gets the path to the Ratings IBN directory /// </summary> /// <value>The ratings path.</value> public string RatingsPath { get { return Path.Combine(ItemsByNamePath, "ratings"); } } /// <summary> /// Gets the media info images path. /// </summary> /// <value>The media info images path.</value> public string MediaInfoImagesPath { get { return Path.Combine(ItemsByNamePath, "mediainfo"); } } /// <summary> /// Gets the path to the user configuration directory /// </summary> /// <value>The user configuration directory path.</value> public string UserConfigurationDirectoryPath { get { return Path.Combine(ConfigurationDirectoryPath, "users"); } } private string _transcodingTempPath; public string TranscodingTempPath { get { return _transcodingTempPath ?? (_transcodingTempPath = Path.Combine(ProgramDataPath, "transcoding-temp")); } set { _transcodingTempPath = value; } } /// <summary> /// Gets the game genre path. /// </summary> /// <value>The game genre path.</value> public string GameGenrePath { get { return Path.Combine(ItemsByNamePath, "GameGenre"); } } private string _internalMetadataPath; public string InternalMetadataPath { get { return _internalMetadataPath ?? (_internalMetadataPath = Path.Combine(DataPath, "metadata")); } set { _internalMetadataPath = value; } } } }