mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-09 03:04:24 -04:00
Merge pull request #7137 from SenorSmartyPants/master
This commit is contained in:
commit
2579b2db56
@ -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)
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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 };
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user