aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Api/Controllers/ConfigurationController.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Jellyfin.Api/Controllers/ConfigurationController.cs')
-rw-r--r--Jellyfin.Api/Controllers/ConfigurationController.cs209
1 files changed, 104 insertions, 105 deletions
diff --git a/Jellyfin.Api/Controllers/ConfigurationController.cs b/Jellyfin.Api/Controllers/ConfigurationController.cs
index a00ac1b0a..9007dfc41 100644
--- a/Jellyfin.Api/Controllers/ConfigurationController.cs
+++ b/Jellyfin.Api/Controllers/ConfigurationController.cs
@@ -13,124 +13,123 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
-namespace Jellyfin.Api.Controllers
+namespace Jellyfin.Api.Controllers;
+
+/// <summary>
+/// Configuration Controller.
+/// </summary>
+[Route("System")]
+[Authorize]
+public class ConfigurationController : BaseJellyfinApiController
{
+ private readonly IServerConfigurationManager _configurationManager;
+ private readonly IMediaEncoder _mediaEncoder;
+
+ private readonly JsonSerializerOptions _serializerOptions = JsonDefaults.Options;
+
/// <summary>
- /// Configuration Controller.
+ /// Initializes a new instance of the <see cref="ConfigurationController"/> class.
/// </summary>
- [Route("System")]
- [Authorize(Policy = Policies.DefaultAuthorization)]
- public class ConfigurationController : BaseJellyfinApiController
+ /// <param name="configurationManager">Instance of the <see cref="IServerConfigurationManager"/> interface.</param>
+ /// <param name="mediaEncoder">Instance of the <see cref="IMediaEncoder"/> interface.</param>
+ public ConfigurationController(
+ IServerConfigurationManager configurationManager,
+ IMediaEncoder mediaEncoder)
{
- private readonly IServerConfigurationManager _configurationManager;
- private readonly IMediaEncoder _mediaEncoder;
+ _configurationManager = configurationManager;
+ _mediaEncoder = mediaEncoder;
+ }
- private readonly JsonSerializerOptions _serializerOptions = JsonDefaults.Options;
+ /// <summary>
+ /// Gets application configuration.
+ /// </summary>
+ /// <response code="200">Application configuration returned.</response>
+ /// <returns>Application configuration.</returns>
+ [HttpGet("Configuration")]
+ [ProducesResponseType(StatusCodes.Status200OK)]
+ public ActionResult<ServerConfiguration> GetConfiguration()
+ {
+ return _configurationManager.Configuration;
+ }
- /// <summary>
- /// Initializes a new instance of the <see cref="ConfigurationController"/> class.
- /// </summary>
- /// <param name="configurationManager">Instance of the <see cref="IServerConfigurationManager"/> interface.</param>
- /// <param name="mediaEncoder">Instance of the <see cref="IMediaEncoder"/> interface.</param>
- public ConfigurationController(
- IServerConfigurationManager configurationManager,
- IMediaEncoder mediaEncoder)
- {
- _configurationManager = configurationManager;
- _mediaEncoder = mediaEncoder;
- }
+ /// <summary>
+ /// Updates application configuration.
+ /// </summary>
+ /// <param name="configuration">Configuration.</param>
+ /// <response code="204">Configuration updated.</response>
+ /// <returns>Update status.</returns>
+ [HttpPost("Configuration")]
+ [Authorize(Policy = Policies.RequiresElevation)]
+ [ProducesResponseType(StatusCodes.Status204NoContent)]
+ public ActionResult UpdateConfiguration([FromBody, Required] ServerConfiguration configuration)
+ {
+ _configurationManager.ReplaceConfiguration(configuration);
+ return NoContent();
+ }
- /// <summary>
- /// Gets application configuration.
- /// </summary>
- /// <response code="200">Application configuration returned.</response>
- /// <returns>Application configuration.</returns>
- [HttpGet("Configuration")]
- [ProducesResponseType(StatusCodes.Status200OK)]
- public ActionResult<ServerConfiguration> GetConfiguration()
- {
- return _configurationManager.Configuration;
- }
+ /// <summary>
+ /// Gets a named configuration.
+ /// </summary>
+ /// <param name="key">Configuration key.</param>
+ /// <response code="200">Configuration returned.</response>
+ /// <returns>Configuration.</returns>
+ [HttpGet("Configuration/{key}")]
+ [ProducesResponseType(StatusCodes.Status200OK)]
+ [ProducesFile(MediaTypeNames.Application.Json)]
+ public ActionResult<object> GetNamedConfiguration([FromRoute, Required] string key)
+ {
+ return _configurationManager.GetConfiguration(key);
+ }
- /// <summary>
- /// Updates application configuration.
- /// </summary>
- /// <param name="configuration">Configuration.</param>
- /// <response code="204">Configuration updated.</response>
- /// <returns>Update status.</returns>
- [HttpPost("Configuration")]
- [Authorize(Policy = Policies.RequiresElevation)]
- [ProducesResponseType(StatusCodes.Status204NoContent)]
- public ActionResult UpdateConfiguration([FromBody, Required] ServerConfiguration configuration)
- {
- _configurationManager.ReplaceConfiguration(configuration);
- return NoContent();
- }
+ /// <summary>
+ /// Updates named configuration.
+ /// </summary>
+ /// <param name="key">Configuration key.</param>
+ /// <param name="configuration">Configuration.</param>
+ /// <response code="204">Named configuration updated.</response>
+ /// <returns>Update status.</returns>
+ [HttpPost("Configuration/{key}")]
+ [Authorize(Policy = Policies.RequiresElevation)]
+ [ProducesResponseType(StatusCodes.Status204NoContent)]
+ public ActionResult UpdateNamedConfiguration([FromRoute, Required] string key, [FromBody, Required] JsonDocument configuration)
+ {
+ var configurationType = _configurationManager.GetConfigurationType(key);
+ var deserializedConfiguration = configuration.Deserialize(configurationType, _serializerOptions);
- /// <summary>
- /// Gets a named configuration.
- /// </summary>
- /// <param name="key">Configuration key.</param>
- /// <response code="200">Configuration returned.</response>
- /// <returns>Configuration.</returns>
- [HttpGet("Configuration/{key}")]
- [ProducesResponseType(StatusCodes.Status200OK)]
- [ProducesFile(MediaTypeNames.Application.Json)]
- public ActionResult<object> GetNamedConfiguration([FromRoute, Required] string key)
+ if (deserializedConfiguration is null)
{
- return _configurationManager.GetConfiguration(key);
+ throw new ArgumentException("Body doesn't contain a valid configuration");
}
- /// <summary>
- /// Updates named configuration.
- /// </summary>
- /// <param name="key">Configuration key.</param>
- /// <param name="configuration">Configuration.</param>
- /// <response code="204">Named configuration updated.</response>
- /// <returns>Update status.</returns>
- [HttpPost("Configuration/{key}")]
- [Authorize(Policy = Policies.RequiresElevation)]
- [ProducesResponseType(StatusCodes.Status204NoContent)]
- public ActionResult UpdateNamedConfiguration([FromRoute, Required] string key, [FromBody, Required] JsonDocument configuration)
- {
- var configurationType = _configurationManager.GetConfigurationType(key);
- var deserializedConfiguration = configuration.Deserialize(configurationType, _serializerOptions);
-
- if (deserializedConfiguration is null)
- {
- throw new ArgumentException("Body doesn't contain a valid configuration");
- }
-
- _configurationManager.SaveConfiguration(key, deserializedConfiguration);
- return NoContent();
- }
+ _configurationManager.SaveConfiguration(key, deserializedConfiguration);
+ return NoContent();
+ }
- /// <summary>
- /// Gets a default MetadataOptions object.
- /// </summary>
- /// <response code="200">Metadata options returned.</response>
- /// <returns>Default MetadataOptions.</returns>
- [HttpGet("Configuration/MetadataOptions/Default")]
- [Authorize(Policy = Policies.RequiresElevation)]
- [ProducesResponseType(StatusCodes.Status200OK)]
- public ActionResult<MetadataOptions> GetDefaultMetadataOptions()
- {
- return new MetadataOptions();
- }
+ /// <summary>
+ /// Gets a default MetadataOptions object.
+ /// </summary>
+ /// <response code="200">Metadata options returned.</response>
+ /// <returns>Default MetadataOptions.</returns>
+ [HttpGet("Configuration/MetadataOptions/Default")]
+ [Authorize(Policy = Policies.RequiresElevation)]
+ [ProducesResponseType(StatusCodes.Status200OK)]
+ public ActionResult<MetadataOptions> GetDefaultMetadataOptions()
+ {
+ return new MetadataOptions();
+ }
- /// <summary>
- /// Updates the path to the media encoder.
- /// </summary>
- /// <param name="mediaEncoderPath">Media encoder path form body.</param>
- /// <response code="204">Media encoder path updated.</response>
- /// <returns>Status.</returns>
- [HttpPost("MediaEncoder/Path")]
- [Authorize(Policy = Policies.FirstTimeSetupOrElevated)]
- [ProducesResponseType(StatusCodes.Status204NoContent)]
- public ActionResult UpdateMediaEncoderPath([FromBody, Required] MediaEncoderPathDto mediaEncoderPath)
- {
- _mediaEncoder.UpdateEncoderPath(mediaEncoderPath.Path, mediaEncoderPath.PathType);
- return NoContent();
- }
+ /// <summary>
+ /// Updates the path to the media encoder.
+ /// </summary>
+ /// <param name="mediaEncoderPath">Media encoder path form body.</param>
+ /// <response code="204">Media encoder path updated.</response>
+ /// <returns>Status.</returns>
+ [HttpPost("MediaEncoder/Path")]
+ [Authorize(Policy = Policies.FirstTimeSetupOrElevated)]
+ [ProducesResponseType(StatusCodes.Status204NoContent)]
+ public ActionResult UpdateMediaEncoderPath([FromBody, Required] MediaEncoderPathDto mediaEncoderPath)
+ {
+ _mediaEncoder.UpdateEncoderPath(mediaEncoderPath.Path, mediaEncoderPath.PathType);
+ return NoContent();
}
}