mirror of
https://github.com/Readarr/Readarr.git
synced 2026-04-15 21:06:20 -04:00
Fixed: Posters not always showing when searching for new authors
(cherry picked from commit 10dc884fa87a8337e9f0622c269adede0b262029) Co-authored-by: optimous012 Closes #145
This commit is contained in:
@@ -6,6 +6,6 @@ namespace Readarr.Http.Frontend.Mappers
|
||||
{
|
||||
string Map(string resourceUrl);
|
||||
bool CanHandle(string resourceUrl);
|
||||
FileStreamResult GetResponse(string resourceUrl);
|
||||
IActionResult GetResponse(string resourceUrl);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ namespace Readarr.Http.Frontend.Mappers
|
||||
|
||||
public override bool CanHandle(string resourceUrl)
|
||||
{
|
||||
return resourceUrl.StartsWith("/MediaCover", StringComparison.InvariantCultureIgnoreCase);
|
||||
return resourceUrl.StartsWith("/MediaCover/", StringComparison.InvariantCultureIgnoreCase);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
55
src/Readarr.Http/Frontend/Mappers/MediaCoverProxyMapper.cs
Normal file
55
src/Readarr.Http/Frontend/Mappers/MediaCoverProxyMapper.cs
Normal file
@@ -0,0 +1,55 @@
|
||||
using System;
|
||||
using System.Net;
|
||||
using System.Text.RegularExpressions;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.StaticFiles;
|
||||
using NzbDrone.Core.MediaCover;
|
||||
|
||||
namespace Readarr.Http.Frontend.Mappers
|
||||
{
|
||||
public class MediaCoverProxyMapper : IMapHttpRequestsToDisk
|
||||
{
|
||||
private readonly Regex _regex = new Regex(@"/MediaCoverProxy/(?<hash>\w+)/(?<filename>(.+)\.(jpg|png|gif))");
|
||||
|
||||
private readonly IMediaCoverProxy _mediaCoverProxy;
|
||||
private readonly IContentTypeProvider _mimeTypeProvider;
|
||||
|
||||
public MediaCoverProxyMapper(IMediaCoverProxy mediaCoverProxy)
|
||||
{
|
||||
_mediaCoverProxy = mediaCoverProxy;
|
||||
_mimeTypeProvider = new FileExtensionContentTypeProvider();
|
||||
}
|
||||
|
||||
public string Map(string resourceUrl)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public bool CanHandle(string resourceUrl)
|
||||
{
|
||||
return resourceUrl.StartsWith("/MediaCoverProxy/", StringComparison.InvariantCultureIgnoreCase);
|
||||
}
|
||||
|
||||
public IActionResult GetResponse(string resourceUrl)
|
||||
{
|
||||
var match = _regex.Match(resourceUrl);
|
||||
|
||||
if (!match.Success)
|
||||
{
|
||||
return new StatusCodeResult((int)HttpStatusCode.NotFound);
|
||||
}
|
||||
|
||||
var hash = match.Groups["hash"].Value;
|
||||
var filename = match.Groups["filename"].Value;
|
||||
|
||||
var imageData = _mediaCoverProxy.GetImage(hash);
|
||||
|
||||
if (!_mimeTypeProvider.TryGetContentType(filename, out var contentType))
|
||||
{
|
||||
contentType = "application/octet-stream";
|
||||
}
|
||||
|
||||
return new FileContentResult(imageData, contentType);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,7 @@ namespace Readarr.Http.Frontend.Mappers
|
||||
|
||||
public abstract bool CanHandle(string resourceUrl);
|
||||
|
||||
public FileStreamResult GetResponse(string resourceUrl)
|
||||
public IActionResult GetResponse(string resourceUrl)
|
||||
{
|
||||
var filePath = Map(resourceUrl);
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ namespace Readarr.Http.Frontend
|
||||
|
||||
if (result != null)
|
||||
{
|
||||
if (result.ContentType == "text/html")
|
||||
if ((result as FileResult)?.ContentType == "text/html")
|
||||
{
|
||||
Response.Headers.DisableCache();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user