Răsfoiți Sursa

Fix request parameters

crobibero 4 ani în urmă
părinte
comite
d801621cfc

+ 7 - 14
Jellyfin.Api/Controllers/LibraryStructureController.cs

@@ -6,6 +6,7 @@ using System.Linq;
 using System.Threading;
 using System.Threading;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
 using Jellyfin.Api.Constants;
 using Jellyfin.Api.Constants;
+using Jellyfin.Api.Models.LibraryStructureDto;
 using MediaBrowser.Common.Progress;
 using MediaBrowser.Common.Progress;
 using MediaBrowser.Controller;
 using MediaBrowser.Controller;
 using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Configuration;
@@ -16,6 +17,7 @@ using MediaBrowser.Model.Entities;
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.ModelBinding;
 
 
 namespace Jellyfin.Api.Controllers
 namespace Jellyfin.Api.Controllers
 {
 {
@@ -74,7 +76,7 @@ namespace Jellyfin.Api.Controllers
             [FromQuery] string? name,
             [FromQuery] string? name,
             [FromQuery] string? collectionType,
             [FromQuery] string? collectionType,
             [FromQuery] string[] paths,
             [FromQuery] string[] paths,
-            [FromQuery] LibraryOptions? libraryOptions,
+            [FromBody] LibraryOptions? libraryOptions,
             [FromQuery] bool refreshLibrary = false)
             [FromQuery] bool refreshLibrary = false)
         {
         {
             libraryOptions ??= new LibraryOptions();
             libraryOptions ??= new LibraryOptions();
@@ -194,9 +196,7 @@ namespace Jellyfin.Api.Controllers
         /// <summary>
         /// <summary>
         /// Add a media path to a library.
         /// Add a media path to a library.
         /// </summary>
         /// </summary>
-        /// <param name="name">The name of the library.</param>
-        /// <param name="path">The path to add.</param>
-        /// <param name="pathInfo">The path info.</param>
+        /// <param name="mediaPathDto">The media path dto.</param>
         /// <param name="refreshLibrary">Whether to refresh the library.</param>
         /// <param name="refreshLibrary">Whether to refresh the library.</param>
         /// <returns>A <see cref="NoContentResult"/>.</returns>
         /// <returns>A <see cref="NoContentResult"/>.</returns>
         /// <response code="204">Media path added.</response>
         /// <response code="204">Media path added.</response>
@@ -204,23 +204,16 @@ namespace Jellyfin.Api.Controllers
         [HttpPost("Paths")]
         [HttpPost("Paths")]
         [ProducesResponseType(StatusCodes.Status204NoContent)]
         [ProducesResponseType(StatusCodes.Status204NoContent)]
         public ActionResult AddMediaPath(
         public ActionResult AddMediaPath(
-            [FromQuery] string? name,
-            [FromQuery] string? path,
-            [FromQuery] MediaPathInfo? pathInfo,
+            [FromBody, BindRequired] MediaPathDto mediaPathDto,
             [FromQuery] bool refreshLibrary = false)
             [FromQuery] bool refreshLibrary = false)
         {
         {
-            if (string.IsNullOrWhiteSpace(name))
-            {
-                throw new ArgumentNullException(nameof(name));
-            }
-
             _libraryMonitor.Stop();
             _libraryMonitor.Stop();
 
 
             try
             try
             {
             {
-                var mediaPath = pathInfo ?? new MediaPathInfo { Path = path };
+                var mediaPath = mediaPathDto.PathInfo ?? new MediaPathInfo { Path = mediaPathDto.Path };
 
 
-                _libraryManager.AddMediaPath(name, mediaPath);
+                _libraryManager.AddMediaPath(mediaPathDto.Name, mediaPath);
             }
             }
             finally
             finally
             {
             {

+ 27 - 0
Jellyfin.Api/Models/LibraryStructureDto/MediaPathDto.cs

@@ -0,0 +1,27 @@
+using System.ComponentModel.DataAnnotations;
+using MediaBrowser.Model.Configuration;
+
+namespace Jellyfin.Api.Models.LibraryStructureDto
+{
+    /// <summary>
+    /// Media Path dto.
+    /// </summary>
+    public class MediaPathDto
+    {
+        /// <summary>
+        /// Gets or sets the name of the library.
+        /// </summary>
+        [Required]
+        public string? Name { get; set; }
+
+        /// <summary>
+        /// Gets or sets the path to add.
+        /// </summary>
+        public string? Path { get; set; }
+
+        /// <summary>
+        /// Gets or sets the path info.
+        /// </summary>
+        public MediaPathInfo? PathInfo { get; set; }
+    }
+}