소스 검색

Merge pull request #7137 from SenorSmartyPants/master

Bond-009 3 년 전
부모
커밋
2579b2db56

+ 1 - 1
Jellyfin.Api/Controllers/DynamicHlsController.cs

@@ -1944,7 +1944,7 @@ namespace Jellyfin.Api.Controllers
                 return Task.CompletedTask;
             });
 
-            return FileStreamResponseHelpers.GetStaticFileResult(segmentPath, MimeTypes.GetMimeType(segmentPath), false, HttpContext);
+            return FileStreamResponseHelpers.GetStaticFileResult(segmentPath, MimeTypes.GetMimeType(segmentPath));
         }
 
         private int? GetCurrentTranscodingIndex(string playlist, string segmentExtension)

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

@@ -69,7 +69,7 @@ namespace Jellyfin.Api.Controllers
                 return BadRequest("Invalid segment.");
             }
 
-            return FileStreamResponseHelpers.GetStaticFileResult(file, MimeTypes.GetMimeType(file), false, HttpContext);
+            return FileStreamResponseHelpers.GetStaticFileResult(file, MimeTypes.GetMimeType(file));
         }
 
         /// <summary>
@@ -186,7 +186,7 @@ namespace Jellyfin.Api.Controllers
                 return Task.CompletedTask;
             });
 
-            return FileStreamResponseHelpers.GetStaticFileResult(path, MimeTypes.GetMimeType(path), false, HttpContext);
+            return FileStreamResponseHelpers.GetStaticFileResult(path, MimeTypes.GetMimeType(path));
         }
     }
 }

+ 14 - 37
Jellyfin.Api/Controllers/ImageController.cs

@@ -570,8 +570,7 @@ namespace Jellyfin.Api.Controllers
                     blur,
                     backgroundColor,
                     foregroundLayer,
-                    item,
-                    Request.Method.Equals(HttpMethods.Head, StringComparison.OrdinalIgnoreCase))
+                    item)
                 .ConfigureAwait(false);
         }
 
@@ -654,8 +653,7 @@ namespace Jellyfin.Api.Controllers
                     blur,
                     backgroundColor,
                     foregroundLayer,
-                    item,
-                    Request.Method.Equals(HttpMethods.Head, StringComparison.OrdinalIgnoreCase))
+                    item)
                 .ConfigureAwait(false);
         }
 
@@ -738,8 +736,7 @@ namespace Jellyfin.Api.Controllers
                     blur,
                     backgroundColor,
                     foregroundLayer,
-                    item,
-                    Request.Method.Equals(HttpMethods.Head, StringComparison.OrdinalIgnoreCase))
+                    item)
                 .ConfigureAwait(false);
         }
 
@@ -822,8 +819,7 @@ namespace Jellyfin.Api.Controllers
                     blur,
                     backgroundColor,
                     foregroundLayer,
-                    item,
-                    Request.Method.Equals(HttpMethods.Head, StringComparison.OrdinalIgnoreCase))
+                    item)
                 .ConfigureAwait(false);
         }
 
@@ -906,8 +902,7 @@ namespace Jellyfin.Api.Controllers
                     blur,
                     backgroundColor,
                     foregroundLayer,
-                    item,
-                    Request.Method.Equals(HttpMethods.Head, StringComparison.OrdinalIgnoreCase))
+                    item)
                 .ConfigureAwait(false);
         }
 
@@ -990,8 +985,7 @@ namespace Jellyfin.Api.Controllers
                     blur,
                     backgroundColor,
                     foregroundLayer,
-                    item,
-                    Request.Method.Equals(HttpMethods.Head, StringComparison.OrdinalIgnoreCase))
+                    item)
                 .ConfigureAwait(false);
         }
 
@@ -1074,8 +1068,7 @@ namespace Jellyfin.Api.Controllers
                     blur,
                     backgroundColor,
                     foregroundLayer,
-                    item,
-                    Request.Method.Equals(HttpMethods.Head, StringComparison.OrdinalIgnoreCase))
+                    item)
                 .ConfigureAwait(false);
         }
 
@@ -1158,8 +1151,7 @@ namespace Jellyfin.Api.Controllers
                     blur,
                     backgroundColor,
                     foregroundLayer,
-                    item,
-                    Request.Method.Equals(HttpMethods.Head, StringComparison.OrdinalIgnoreCase))
+                    item)
                 .ConfigureAwait(false);
         }
 
@@ -1242,8 +1234,7 @@ namespace Jellyfin.Api.Controllers
                     blur,
                     backgroundColor,
                     foregroundLayer,
-                    item,
-                    Request.Method.Equals(HttpMethods.Head, StringComparison.OrdinalIgnoreCase))
+                    item)
                 .ConfigureAwait(false);
         }
 
@@ -1326,8 +1317,7 @@ namespace Jellyfin.Api.Controllers
                     blur,
                     backgroundColor,
                     foregroundLayer,
-                    item,
-                    Request.Method.Equals(HttpMethods.Head, StringComparison.OrdinalIgnoreCase))
+                    item)
                 .ConfigureAwait(false);
         }
 
@@ -1410,8 +1400,7 @@ namespace Jellyfin.Api.Controllers
                     blur,
                     backgroundColor,
                     foregroundLayer,
-                    item,
-                    Request.Method.Equals(HttpMethods.Head, StringComparison.OrdinalIgnoreCase))
+                    item)
                 .ConfigureAwait(false);
         }
 
@@ -1494,8 +1483,7 @@ namespace Jellyfin.Api.Controllers
                     blur,
                     backgroundColor,
                     foregroundLayer,
-                    item,
-                    Request.Method.Equals(HttpMethods.Head, StringComparison.OrdinalIgnoreCase))
+                    item)
                 .ConfigureAwait(false);
         }
 
@@ -1596,7 +1584,6 @@ namespace Jellyfin.Api.Controllers
                     backgroundColor,
                     foregroundLayer,
                     null,
-                    Request.Method.Equals(HttpMethods.Head, StringComparison.OrdinalIgnoreCase),
                     info)
                 .ConfigureAwait(false);
         }
@@ -1698,7 +1685,6 @@ namespace Jellyfin.Api.Controllers
                     backgroundColor,
                     foregroundLayer,
                     null,
-                    Request.Method.Equals(HttpMethods.Head, StringComparison.OrdinalIgnoreCase),
                     info)
                 .ConfigureAwait(false);
         }
@@ -1907,7 +1893,6 @@ namespace Jellyfin.Api.Controllers
             string? backgroundColor,
             string? foregroundLayer,
             BaseItem? item,
-            bool isHeadRequest,
             ItemImageInfo? imageInfo = null)
         {
             if (percentPlayed.HasValue)
@@ -1988,8 +1973,7 @@ namespace Jellyfin.Api.Controllers
             return await GetImageResult(
                 options,
                 cacheDuration,
-                responseHeaders,
-                isHeadRequest).ConfigureAwait(false);
+                responseHeaders).ConfigureAwait(false);
         }
 
         private ImageFormat[] GetOutputFormats(ImageFormat? format)
@@ -2068,8 +2052,7 @@ namespace Jellyfin.Api.Controllers
         private async Task<ActionResult> GetImageResult(
             ImageProcessingOptions imageProcessingOptions,
             TimeSpan? cacheDuration,
-            IDictionary<string, string> headers,
-            bool isHeadRequest)
+            IDictionary<string, string> headers)
         {
             var (imagePath, imageContentType, dateImageModified) = await _imageProcessor.ProcessImage(imageProcessingOptions).ConfigureAwait(false);
 
@@ -2120,12 +2103,6 @@ namespace Jellyfin.Api.Controllers
                 }
             }
 
-            // if the request is a head request, return a NoContent result with the same headers as it would with a GET request
-            if (isHeadRequest)
-            {
-                return NoContent();
-            }
-
             return PhysicalFile(imagePath, imageContentType ?? MediaTypeNames.Text.Plain);
         }
     }

+ 2 - 4
Jellyfin.Api/Controllers/VideosController.cs

@@ -465,7 +465,7 @@ namespace Jellyfin.Api.Controllers
                 StreamingHelpers.AddDlnaHeaders(state, Response.Headers, true, state.Request.StartTimeTicks, Request, _dlnaManager);
 
                 var httpClient = _httpClientFactory.CreateClient(NamedClient.Default);
-                return await FileStreamResponseHelpers.GetStaticRemoteStreamResult(state, isHeadRequest, httpClient, HttpContext).ConfigureAwait(false);
+                return await FileStreamResponseHelpers.GetStaticRemoteStreamResult(state, httpClient, HttpContext).ConfigureAwait(false);
             }
 
             if (@static.HasValue && @static.Value && state.InputProtocol != MediaProtocol.File)
@@ -494,9 +494,7 @@ namespace Jellyfin.Api.Controllers
 
                 return FileStreamResponseHelpers.GetStaticFileResult(
                     state.MediaPath,
-                    contentType,
-                    isHeadRequest,
-                    HttpContext);
+                    contentType);
             }
 
             // Need to start ffmpeg (because media can't be returned directly)

+ 2 - 4
Jellyfin.Api/Helpers/AudioHelper.cs

@@ -138,7 +138,7 @@ namespace Jellyfin.Api.Helpers
                 StreamingHelpers.AddDlnaHeaders(state, _httpContextAccessor.HttpContext.Response.Headers, true, streamingRequest.StartTimeTicks, _httpContextAccessor.HttpContext.Request, _dlnaManager);
 
                 var httpClient = _httpClientFactory.CreateClient(NamedClient.Default);
-                return await FileStreamResponseHelpers.GetStaticRemoteStreamResult(state, isHeadRequest, httpClient, _httpContextAccessor.HttpContext).ConfigureAwait(false);
+                return await FileStreamResponseHelpers.GetStaticRemoteStreamResult(state, httpClient, _httpContextAccessor.HttpContext).ConfigureAwait(false);
             }
 
             if (streamingRequest.Static && state.InputProtocol != MediaProtocol.File)
@@ -167,9 +167,7 @@ namespace Jellyfin.Api.Helpers
 
                 return FileStreamResponseHelpers.GetStaticFileResult(
                     state.MediaPath,
-                    contentType,
-                    isHeadRequest,
-                    _httpContextAccessor.HttpContext);
+                    contentType);
             }
 
             // Need to start ffmpeg (because media can't be returned directly)

+ 1 - 21
Jellyfin.Api/Helpers/FileStreamResponseHelpers.cs

@@ -22,14 +22,12 @@ namespace Jellyfin.Api.Helpers
         /// Returns a static file from a remote source.
         /// </summary>
         /// <param name="state">The current <see cref="StreamState"/>.</param>
-        /// <param name="isHeadRequest">Whether the current request is a HTTP HEAD request so only the headers get returned.</param>
         /// <param name="httpClient">The <see cref="HttpClient"/> making the remote request.</param>
         /// <param name="httpContext">The current http context.</param>
         /// <param name="cancellationToken">A cancellation token that can be used to cancel the operation.</param>
         /// <returns>A <see cref="Task{ActionResult}"/> containing the API response.</returns>
         public static async Task<ActionResult> GetStaticRemoteStreamResult(
             StreamState state,
-            bool isHeadRequest,
             HttpClient httpClient,
             HttpContext httpContext,
             CancellationToken cancellationToken = default)
@@ -45,12 +43,6 @@ namespace Jellyfin.Api.Helpers
 
             httpContext.Response.Headers[HeaderNames.AcceptRanges] = "none";
 
-            if (isHeadRequest)
-            {
-                httpContext.Response.Headers[HeaderNames.ContentType] = contentType;
-                return new OkResult();
-            }
-
             return new FileStreamResult(await response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false), contentType);
         }
 
@@ -59,23 +51,11 @@ namespace Jellyfin.Api.Helpers
         /// </summary>
         /// <param name="path">The path to the file.</param>
         /// <param name="contentType">The content type of the file.</param>
-        /// <param name="isHeadRequest">Whether the current request is a HTTP HEAD request so only the headers get returned.</param>
-        /// <param name="httpContext">The current http context.</param>
         /// <returns>An <see cref="ActionResult"/> the file.</returns>
         public static ActionResult GetStaticFileResult(
             string path,
-            string contentType,
-            bool isHeadRequest,
-            HttpContext httpContext)
+            string contentType)
         {
-            httpContext.Response.ContentType = contentType;
-
-            // if the request is a head request, return an OkResult (200) with the same headers as it would with a GET request
-            if (isHeadRequest)
-            {
-                return new OkResult();
-            }
-
             return new PhysicalFileResult(path, contentType) { EnableRangeProcessing = true };
         }