Sfoglia il codice sorgente

Fix some request parameters

crobibero 4 anni fa
parent
commit
1535f363b2

+ 1 - 2
Jellyfin.Api/Auth/BaseAuthorizationHandler.cs

@@ -1,5 +1,4 @@
-using System.Net;
-using System.Security.Claims;
+using System.Security.Claims;
 using Jellyfin.Api.Helpers;
 using Jellyfin.Data.Enums;
 using MediaBrowser.Common.Net;

+ 2 - 2
Jellyfin.Api/Controllers/LibraryStructureController.cs

@@ -249,7 +249,7 @@ namespace Jellyfin.Api.Controllers
         [ProducesResponseType(StatusCodes.Status204NoContent)]
         public ActionResult UpdateMediaPath(
             [FromQuery] string? name,
-            [FromQuery] MediaPathInfo? pathInfo)
+            [FromBody] MediaPathInfo? pathInfo)
         {
             if (string.IsNullOrWhiteSpace(name))
             {
@@ -320,7 +320,7 @@ namespace Jellyfin.Api.Controllers
         [ProducesResponseType(StatusCodes.Status204NoContent)]
         public ActionResult UpdateLibraryOptions(
             [FromQuery] string? id,
-            [FromQuery] LibraryOptions? libraryOptions)
+            [FromBody] LibraryOptions? libraryOptions)
         {
             var collectionFolder = (CollectionFolder)_libraryManager.GetItemById(id);
 

+ 0 - 1
Jellyfin.Api/Controllers/LiveTvController.cs

@@ -23,7 +23,6 @@ using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.LiveTv;
 using MediaBrowser.Controller.Net;
 using MediaBrowser.Model.Dto;
-using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.LiveTv;
 using MediaBrowser.Model.Net;
 using MediaBrowser.Model.Querying;

+ 6 - 7
Jellyfin.Api/Controllers/MediaInfoController.cs

@@ -7,6 +7,7 @@ using System.Text.Json;
 using System.Threading;
 using System.Threading.Tasks;
 using Jellyfin.Api.Constants;
+using Jellyfin.Api.Models.MediaInfoDtos;
 using Jellyfin.Api.Models.VideoDtos;
 using Jellyfin.Data.Entities;
 using Jellyfin.Data.Enums;
@@ -91,7 +92,7 @@ namespace Jellyfin.Api.Controllers
         [ProducesResponseType(StatusCodes.Status200OK)]
         public async Task<ActionResult<PlaybackInfoResponse>> GetPlaybackInfo([FromRoute] Guid itemId, [FromQuery] Guid? userId)
         {
-            return await GetPlaybackInfoInternal(itemId, userId, null, null).ConfigureAwait(false);
+            return await GetPlaybackInfoInternal(itemId, userId).ConfigureAwait(false);
         }
 
         /// <summary>
@@ -231,8 +232,7 @@ namespace Jellyfin.Api.Controllers
         /// <param name="subtitleStreamIndex">The subtitle stream index.</param>
         /// <param name="maxAudioChannels">The maximum number of audio channels.</param>
         /// <param name="itemId">The item id.</param>
-        /// <param name="deviceProfile">The device profile.</param>
-        /// <param name="directPlayProtocols">The direct play protocols. Default: <see cref="MediaProtocol.Http"/>.</param>
+        /// <param name="openLiveStreamDto">The open live stream dto.</param>
         /// <param name="enableDirectPlay">Whether to enable direct play. Default: true.</param>
         /// <param name="enableDirectStream">Whether to enable direct stream. Default: true.</param>
         /// <response code="200">Media source opened.</response>
@@ -249,8 +249,7 @@ namespace Jellyfin.Api.Controllers
             [FromQuery] int? subtitleStreamIndex,
             [FromQuery] int? maxAudioChannels,
             [FromQuery] Guid? itemId,
-            [FromQuery] DeviceProfile? deviceProfile,
-            [FromQuery] MediaProtocol[] directPlayProtocols,
+            [FromBody] OpenLiveStreamDto openLiveStreamDto,
             [FromQuery] bool enableDirectPlay = true,
             [FromQuery] bool enableDirectStream = true)
         {
@@ -265,10 +264,10 @@ namespace Jellyfin.Api.Controllers
                 SubtitleStreamIndex = subtitleStreamIndex,
                 MaxAudioChannels = maxAudioChannels,
                 ItemId = itemId ?? Guid.Empty,
-                DeviceProfile = deviceProfile,
+                DeviceProfile = openLiveStreamDto?.DeviceProfile,
                 EnableDirectPlay = enableDirectPlay,
                 EnableDirectStream = enableDirectStream,
-                DirectPlayProtocols = directPlayProtocols ?? new[] { MediaProtocol.Http }
+                DirectPlayProtocols = openLiveStreamDto?.DirectPlayProtocols ?? new[] { MediaProtocol.Http }
             };
             return await OpenMediaSource(request).ConfigureAwait(false);
         }

+ 0 - 1
Jellyfin.Api/Helpers/RequestHelpers.cs

@@ -5,7 +5,6 @@ using System.Net;
 using Jellyfin.Data.Enums;
 using MediaBrowser.Controller.Net;
 using MediaBrowser.Controller.Session;
-using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Querying;
 using Microsoft.AspNetCore.Http;
 

+ 24 - 0
Jellyfin.Api/Models/MediaInfoDtos/OpenLiveStreamDto.cs

@@ -0,0 +1,24 @@
+using System.Diagnostics.CodeAnalysis;
+using MediaBrowser.Model.Dlna;
+using MediaBrowser.Model.MediaInfo;
+
+namespace Jellyfin.Api.Models.MediaInfoDtos
+{
+    /// <summary>
+    /// Open live stream dto.
+    /// </summary>
+    public class OpenLiveStreamDto
+    {
+        /// <summary>
+        /// Gets or sets the device profile.
+        /// </summary>
+        public DeviceProfile? DeviceProfile { get; set; }
+
+        /// <summary>
+        /// Gets or sets the device play protocols.
+        /// </summary>
+        [SuppressMessage("Microsoft.Performance", "CA1819:DontReturnArrays", MessageId = "DevicePlayProtocols", Justification = "Imported from ServiceStack")]
+        [SuppressMessage("Microsoft.Performance", "SA1011:ClosingBracketsSpace", MessageId = "DevicePlayProtocols", Justification = "Imported from ServiceStack")]
+        public MediaProtocol[]? DirectPlayProtocols { get; set; }
+    }
+}

+ 28 - 32
Jellyfin.Api/WebSocketListeners/SessionInfoWebSocketListener.cs

@@ -12,20 +12,13 @@ namespace Jellyfin.Api.WebSocketListeners
     /// </summary>
     public class SessionInfoWebSocketListener : BasePeriodicWebSocketListener<IEnumerable<SessionInfo>, WebSocketListenerState>
     {
-        /// <summary>
-        /// Gets the name.
-        /// </summary>
-        /// <value>The name.</value>
-        protected override string Name => "Sessions";
-
-        /// <summary>
-        /// The _kernel.
-        /// </summary>
         private readonly ISessionManager _sessionManager;
 
         /// <summary>
         /// Initializes a new instance of the <see cref="SessionInfoWebSocketListener"/> class.
         /// </summary>
+        /// <param name="logger">Instance of the <see cref="ILogger{SessionInfoWebSocketListener}"/> interface.</param>
+        /// <param name="sessionManager">Instance of the <see cref="ISessionManager"/> interface.</param>
         public SessionInfoWebSocketListener(ILogger<SessionInfoWebSocketListener> logger, ISessionManager sessionManager)
             : base(logger)
         {
@@ -40,6 +33,32 @@ namespace Jellyfin.Api.WebSocketListeners
             _sessionManager.SessionActivity += OnSessionManagerSessionActivity;
         }
 
+        /// <inheritdoc />
+        protected override string Name => "Sessions";
+
+        /// <summary>
+        /// Gets the data to send.
+        /// </summary>
+        /// <returns>Task{SystemInfo}.</returns>
+        protected override Task<IEnumerable<SessionInfo>> GetDataToSend()
+        {
+            return Task.FromResult(_sessionManager.Sessions);
+        }
+
+        /// <inheritdoc />
+        protected override void Dispose(bool dispose)
+        {
+            _sessionManager.SessionStarted -= OnSessionManagerSessionStarted;
+            _sessionManager.SessionEnded -= OnSessionManagerSessionEnded;
+            _sessionManager.PlaybackStart -= OnSessionManagerPlaybackStart;
+            _sessionManager.PlaybackStopped -= OnSessionManagerPlaybackStopped;
+            _sessionManager.PlaybackProgress -= OnSessionManagerPlaybackProgress;
+            _sessionManager.CapabilitiesChanged -= OnSessionManagerCapabilitiesChanged;
+            _sessionManager.SessionActivity -= OnSessionManagerSessionActivity;
+
+            base.Dispose(dispose);
+        }
+
         private async void OnSessionManagerSessionActivity(object sender, SessionEventArgs e)
         {
             await SendData(false).ConfigureAwait(false);
@@ -74,28 +93,5 @@ namespace Jellyfin.Api.WebSocketListeners
         {
             await SendData(true).ConfigureAwait(false);
         }
-
-        /// <summary>
-        /// Gets the data to send.
-        /// </summary>
-        /// <returns>Task{SystemInfo}.</returns>
-        protected override Task<IEnumerable<SessionInfo>> GetDataToSend()
-        {
-            return Task.FromResult(_sessionManager.Sessions);
-        }
-
-        /// <inheritdoc />
-        protected override void Dispose(bool dispose)
-        {
-            _sessionManager.SessionStarted -= OnSessionManagerSessionStarted;
-            _sessionManager.SessionEnded -= OnSessionManagerSessionEnded;
-            _sessionManager.PlaybackStart -= OnSessionManagerPlaybackStart;
-            _sessionManager.PlaybackStopped -= OnSessionManagerPlaybackStopped;
-            _sessionManager.PlaybackProgress -= OnSessionManagerPlaybackProgress;
-            _sessionManager.CapabilitiesChanged -= OnSessionManagerCapabilitiesChanged;
-            _sessionManager.SessionActivity -= OnSessionManagerSessionActivity;
-
-            base.Dispose(dispose);
-        }
     }
 }