Răsfoiți Sursa

Merge pull request #5500 from crobibero/api-integration-fix

Fix third party integration

(cherry picked from commit 7a988ef77ddcd8450c10f145178e82a3f0f50883)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
Bond-009 4 ani în urmă
părinte
comite
787ad44323

+ 3 - 3
Jellyfin.Api/Controllers/LibraryController.cs

@@ -591,15 +591,15 @@ namespace Jellyfin.Api.Controllers
         /// <summary>
         /// Reports that new movies have been added by an external source.
         /// </summary>
-        /// <param name="updates">A list of updated media paths.</param>
+        /// <param name="dto">The update paths.</param>
         /// <response code="204">Report success.</response>
         /// <returns>A <see cref="NoContentResult"/>.</returns>
         [HttpPost("Library/Media/Updated")]
         [Authorize(Policy = Policies.DefaultAuthorization)]
         [ProducesResponseType(StatusCodes.Status204NoContent)]
-        public ActionResult PostUpdatedMedia([FromBody, Required] MediaUpdateInfoDto[] updates)
+        public ActionResult PostUpdatedMedia([FromBody, Required] MediaUpdateInfoDto dto)
         {
-            foreach (var item in updates)
+            foreach (var item in dto.Updates)
             {
                 _libraryMonitor.ReportFileSystemChanged(item.Path);
             }

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

@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
 using System.Linq;
 using System.Threading;
 using Jellyfin.Api.Constants;
@@ -86,26 +87,19 @@ namespace Jellyfin.Api.Controllers
         /// <summary>
         /// Sends a notification to all admins.
         /// </summary>
-        /// <param name="url">The URL of the notification.</param>
-        /// <param name="level">The level of the notification.</param>
-        /// <param name="name">The name of the notification.</param>
-        /// <param name="description">The description of the notification.</param>
+        /// <param name="notificationDto">The notification request.</param>
         /// <response code="204">Notification sent.</response>
         /// <returns>A <cref see="NoContentResult"/>.</returns>
         [HttpPost("Admin")]
         [ProducesResponseType(StatusCodes.Status204NoContent)]
-        public ActionResult CreateAdminNotification(
-            [FromQuery] string? url,
-            [FromQuery] NotificationLevel? level,
-            [FromQuery] string name = "",
-            [FromQuery] string description = "")
+        public ActionResult CreateAdminNotification([FromBody, Required] AdminNotificationDto notificationDto)
         {
             var notification = new NotificationRequest
             {
-                Name = name,
-                Description = description,
-                Url = url,
-                Level = level ?? NotificationLevel.Normal,
+                Name = notificationDto.Name,
+                Description = notificationDto.Description,
+                Url = notificationDto.Url,
+                Level = notificationDto.NotificationLevel ?? NotificationLevel.Normal,
                 UserIds = _userManager.Users
                     .Where(user => user.HasPermission(PermissionKind.IsAdministrator))
                     .Select(user => user.Id)
@@ -114,7 +108,6 @@ namespace Jellyfin.Api.Controllers
             };
 
             _notificationManager.SendNotification(notification, CancellationToken.None);
-
             return NoContent();
         }
 

+ 6 - 9
Jellyfin.Api/Models/LibraryDtos/MediaUpdateInfoDto.cs

@@ -1,4 +1,7 @@
-namespace Jellyfin.Api.Models.LibraryDtos
+using System;
+using System.Collections.Generic;
+
+namespace Jellyfin.Api.Models.LibraryDtos
 {
     /// <summary>
     /// Media Update Info Dto.
@@ -6,14 +9,8 @@
     public class MediaUpdateInfoDto
     {
         /// <summary>
-        /// Gets or sets media path.
-        /// </summary>
-        public string? Path { get; set; }
-
-        /// <summary>
-        /// Gets or sets media update type.
-        /// Created, Modified, Deleted.
+        /// Gets or sets the list of updates.
         /// </summary>
-        public string? UpdateType { get; set; }
+        public IReadOnlyList<MediaUpdateInfoPathDto> Updates { get; set; } = Array.Empty<MediaUpdateInfoPathDto>();
     }
 }

+ 19 - 0
Jellyfin.Api/Models/LibraryDtos/MediaUpdateInfoPathDto.cs

@@ -0,0 +1,19 @@
+namespace Jellyfin.Api.Models.LibraryDtos
+{
+    /// <summary>
+    /// The media update info path.
+    /// </summary>
+    public class MediaUpdateInfoPathDto
+    {
+        /// <summary>
+        /// Gets or sets media path.
+        /// </summary>
+        public string? Path { get; set; }
+
+        /// <summary>
+        /// Gets or sets media update type.
+        /// Created, Modified, Deleted.
+        /// </summary>
+        public string? UpdateType { get; set; }
+    }
+}

+ 30 - 0
Jellyfin.Api/Models/NotificationDtos/AdminNotificationDto.cs

@@ -0,0 +1,30 @@
+using MediaBrowser.Model.Notifications;
+
+namespace Jellyfin.Api.Models.NotificationDtos
+{
+    /// <summary>
+    /// The admin notification dto.
+    /// </summary>
+    public class AdminNotificationDto
+    {
+        /// <summary>
+        /// Gets or sets the notification name.
+        /// </summary>
+        public string? Name { get; set; }
+
+        /// <summary>
+        /// Gets or sets the notification description.
+        /// </summary>
+        public string? Description { get; set; }
+
+        /// <summary>
+        /// Gets or sets the notification level.
+        /// </summary>
+        public NotificationLevel? NotificationLevel { get; set; }
+
+        /// <summary>
+        /// Gets or sets the notification url.
+        /// </summary>
+        public string? Url { get; set; }
+    }
+}