af1152b001
Refactored all C# test files to use explicit namespace declarations and moved all using directives inside the namespace block for consistency. Updated assembly info and cache files to reflect the new build. Adjusted MvcTestingAppManifest.json to use fully qualified assembly names. No functional changes; all updates are related to code style, organization, and project metadata.
128 lines
5.0 KiB
C#
128 lines
5.0 KiB
C#
// <copyright file="ServerConfigurationManager.cs" company="PlaceholderCompany">
|
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
|
// </copyright>
|
|
|
|
namespace Emby.Server.Implementations.Configuration
|
|
{
|
|
using System;
|
|
using System.Globalization;
|
|
using System.IO;
|
|
using Emby.Server.Implementations.AppBase;
|
|
using Jellyfin.Data.Events;
|
|
using MediaBrowser.Common.Configuration;
|
|
using MediaBrowser.Controller;
|
|
using MediaBrowser.Controller.Configuration;
|
|
using MediaBrowser.Model.Configuration;
|
|
using MediaBrowser.Model.Serialization;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
/// <summary>
|
|
/// Class ServerConfigurationManager.
|
|
/// </summary>
|
|
public class ServerConfigurationManager : BaseConfigurationManager, IServerConfigurationManager
|
|
{
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="ServerConfigurationManager" /> class.
|
|
/// </summary>
|
|
/// <param name="applicationPaths">The application paths.</param>
|
|
/// <param name="loggerFactory">The logger factory.</param>
|
|
/// <param name="xmlSerializer">The XML serializer.</param>
|
|
public ServerConfigurationManager(
|
|
IApplicationPaths applicationPaths,
|
|
ILoggerFactory loggerFactory,
|
|
IXmlSerializer xmlSerializer)
|
|
: base(applicationPaths, loggerFactory, xmlSerializer)
|
|
{
|
|
UpdateMetadataPath();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Configuration updating event.
|
|
/// </summary>
|
|
public event EventHandler<GenericEventArgs<ServerConfiguration>>? ConfigurationUpdating;
|
|
|
|
/// <summary>
|
|
/// Gets the type of the configuration.
|
|
/// </summary>
|
|
/// <value>The type of the configuration.</value>
|
|
protected override Type ConfigurationType => typeof(ServerConfiguration);
|
|
|
|
/// <summary>
|
|
/// Gets the application paths.
|
|
/// </summary>
|
|
/// <value>The application paths.</value>
|
|
public IServerApplicationPaths ApplicationPaths => (IServerApplicationPaths)CommonApplicationPaths;
|
|
|
|
/// <summary>
|
|
/// Gets the configuration.
|
|
/// </summary>
|
|
/// <value>The configuration.</value>
|
|
public ServerConfiguration Configuration => (ServerConfiguration)CommonConfiguration;
|
|
|
|
/// <summary>
|
|
/// Called when [configuration updated].
|
|
/// </summary>
|
|
protected override void OnConfigurationUpdated()
|
|
{
|
|
UpdateMetadataPath();
|
|
|
|
base.OnConfigurationUpdated();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Updates the metadata path.
|
|
/// </summary>
|
|
/// <exception cref="UnauthorizedAccessException">If the directory does not exist, and the caller does not have the required permission to create it.</exception>
|
|
/// <exception cref="NotSupportedException">If there is a custom path transcoding path specified, but it is invalid.</exception>
|
|
/// <exception cref="IOException">If the directory does not exist, and it also could not be created.</exception>
|
|
private void UpdateMetadataPath()
|
|
{
|
|
((ServerApplicationPaths)ApplicationPaths).InternalMetadataPath = string.IsNullOrWhiteSpace(Configuration.MetadataPath)
|
|
? ApplicationPaths.DefaultInternalMetadataPath
|
|
: Configuration.MetadataPath;
|
|
Directory.CreateDirectory(ApplicationPaths.InternalMetadataPath);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Replaces the configuration.
|
|
/// </summary>
|
|
/// <param name="newConfiguration">The new configuration.</param>
|
|
/// <exception cref="DirectoryNotFoundException">If the configuration path doesn't exist.</exception>
|
|
public override void ReplaceConfiguration(BaseApplicationConfiguration newConfiguration)
|
|
{
|
|
var newConfig = (ServerConfiguration)newConfiguration;
|
|
|
|
ValidateMetadataPath(newConfig);
|
|
|
|
ConfigurationUpdating?.Invoke(this, new GenericEventArgs<ServerConfiguration>(newConfig));
|
|
|
|
base.ReplaceConfiguration(newConfiguration);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Validates the metadata path.
|
|
/// </summary>
|
|
/// <param name="newConfig">The new configuration.</param>
|
|
/// <exception cref="DirectoryNotFoundException">The new config path doesn't exist.</exception>
|
|
private void ValidateMetadataPath(ServerConfiguration newConfig)
|
|
{
|
|
var newPath = newConfig.MetadataPath;
|
|
|
|
if (!string.IsNullOrWhiteSpace(newPath)
|
|
&& !string.Equals(Configuration.MetadataPath, newPath, StringComparison.Ordinal))
|
|
{
|
|
if (!Directory.Exists(newPath))
|
|
{
|
|
throw new DirectoryNotFoundException(
|
|
string.Format(
|
|
CultureInfo.InvariantCulture,
|
|
"{0} does not exist.",
|
|
newPath));
|
|
}
|
|
|
|
EnsureWriteAccess(newPath);
|
|
}
|
|
}
|
|
}
|
|
}
|