Bladeren bron

Fix UpdateMediaPath model binding (#5378)

Claus Vium 4 jaren geleden
bovenliggende
commit
d0a2d00b29

+ 5 - 8
Jellyfin.Api/Controllers/LibraryStructureController.cs

@@ -241,23 +241,20 @@ namespace Jellyfin.Api.Controllers
         /// <summary>
         /// Updates a media path.
         /// </summary>
-        /// <param name="name">The name of the library.</param>
-        /// <param name="pathInfo">The path info.</param>
+        /// <param name="mediaPathRequestDto">The name of the library and path infos.</param>
         /// <returns>A <see cref="NoContentResult"/>.</returns>
         /// <response code="204">Media path updated.</response>
         /// <exception cref="ArgumentNullException">The name of the library may not be empty.</exception>
         [HttpPost("Paths/Update")]
         [ProducesResponseType(StatusCodes.Status204NoContent)]
-        public ActionResult UpdateMediaPath(
-            [FromQuery] string? name,
-            [FromBody] MediaPathInfo? pathInfo)
+        public ActionResult UpdateMediaPath([FromBody, Required] UpdateMediaPathRequestDto mediaPathRequestDto)
         {
-            if (string.IsNullOrWhiteSpace(name))
+            if (string.IsNullOrWhiteSpace(mediaPathRequestDto.Name))
             {
-                throw new ArgumentNullException(nameof(name));
+                throw new ArgumentNullException(nameof(mediaPathRequestDto), "Name must not be null or empty");
             }
 
-            _libraryManager.UpdateMediaPath(name, pathInfo);
+            _libraryManager.UpdateMediaPath(mediaPathRequestDto.Name, mediaPathRequestDto.PathInfo);
             return NoContent();
         }
 

+ 23 - 0
Jellyfin.Api/Models/LibraryStructureDto/UpdateMediaPathRequestDto.cs

@@ -0,0 +1,23 @@
+using System.ComponentModel.DataAnnotations;
+using MediaBrowser.Model.Configuration;
+
+namespace Jellyfin.Api.Models.LibraryStructureDto
+{
+    /// <summary>
+    /// Update library options dto.
+    /// </summary>
+    public class UpdateMediaPathRequestDto
+    {
+        /// <summary>
+        /// Gets or sets the library name.
+        /// </summary>
+        [Required]
+        public string Name { get; set; } = null!;
+
+        /// <summary>
+        /// Gets or sets library folder path information.
+        /// </summary>
+        [Required]
+        public MediaPathInfo PathInfo { get; set; } = null!;
+    }
+}