UI now loads the 250px image if available, and reverts to full size otherwise.

This commit is contained in:
Taloth Saldono
2015-01-29 21:13:24 +01:00
parent 35ab3a28fd
commit b145ea1a70
4 changed files with 46 additions and 4 deletions

View File

@@ -1,4 +1,6 @@
using System.IO;
using System.Text.RegularExpressions;
using Nancy;
using NLog;
using NzbDrone.Common.Disk;
using NzbDrone.Common.EnvironmentInfo;
@@ -8,6 +10,8 @@ namespace NzbDrone.Api.Frontend.Mappers
{
public class MediaCoverMapper : StaticResourceMapperBase
{
private static readonly Regex RegexResizedImage = new Regex(@"-\d+\.jpg($|\?)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly IAppFolderInfo _appFolderInfo;
public MediaCoverMapper(IAppFolderInfo appFolderInfo, IDiskProvider diskProvider, Logger logger)
@@ -24,6 +28,24 @@ namespace NzbDrone.Api.Frontend.Mappers
return Path.Combine(_appFolderInfo.GetAppDataPath(), path);
}
public override Response GetResponse(string resourceUrl)
{
var result = base.GetResponse(resourceUrl);
// Return the full sized image if someone requests a non-existing resized one.
// TODO: This code can be removed later once everyone had the update for a while.
if (result is NotFoundResponse)
{
var baseResourceUrl = RegexResizedImage.Replace(resourceUrl, ".jpg$1");
if (baseResourceUrl != resourceUrl)
{
result = base.GetResponse(baseResourceUrl);
}
}
return result;
}
public override bool CanHandle(string resourceUrl)
{
return resourceUrl.StartsWith("/MediaCover");