diff --git a/src/NzbDrone.Core/MediaCover/MediaCoverProxy.cs b/src/NzbDrone.Core/MediaCover/MediaCoverProxy.cs index 8f6ed8c9a..b8b0cc3a0 100644 --- a/src/NzbDrone.Core/MediaCover/MediaCoverProxy.cs +++ b/src/NzbDrone.Core/MediaCover/MediaCoverProxy.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.Threading.Tasks; using NzbDrone.Common.Cache; using NzbDrone.Common.Http; using NzbDrone.Core.Configuration; @@ -12,7 +13,7 @@ namespace NzbDrone.Core.MediaCover string RegisterUrl(string url); string GetUrl(string hash); - byte[] GetImage(string hash); + Task GetImage(string hash); } public class MediaCoverProxy : IMediaCoverProxy @@ -52,13 +53,14 @@ namespace NzbDrone.Core.MediaCover return result; } - public byte[] GetImage(string hash) + public async Task GetImage(string hash) { var url = GetUrl(hash); var request = new HttpRequest(url); + var response = await _httpClient.GetAsync(request); - return _httpClient.Get(request).ResponseData; + return response.ResponseData; } } } diff --git a/src/Sonarr.Http/Frontend/Mappers/IMapHttpRequestsToDisk.cs b/src/Sonarr.Http/Frontend/Mappers/IMapHttpRequestsToDisk.cs index 7b3021f8f..0f8ebe74d 100644 --- a/src/Sonarr.Http/Frontend/Mappers/IMapHttpRequestsToDisk.cs +++ b/src/Sonarr.Http/Frontend/Mappers/IMapHttpRequestsToDisk.cs @@ -1,4 +1,5 @@ -using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; namespace Sonarr.Http.Frontend.Mappers { @@ -6,6 +7,6 @@ namespace Sonarr.Http.Frontend.Mappers { string Map(string resourceUrl); bool CanHandle(string resourceUrl); - IActionResult GetResponse(string resourceUrl); + Task GetResponse(string resourceUrl); } } diff --git a/src/Sonarr.Http/Frontend/Mappers/MediaCoverProxyMapper.cs b/src/Sonarr.Http/Frontend/Mappers/MediaCoverProxyMapper.cs index ece8c0609..9c869c899 100644 --- a/src/Sonarr.Http/Frontend/Mappers/MediaCoverProxyMapper.cs +++ b/src/Sonarr.Http/Frontend/Mappers/MediaCoverProxyMapper.cs @@ -1,6 +1,7 @@ -using System; +using System; using System.Net; using System.Text.RegularExpressions; +using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.StaticFiles; using NzbDrone.Core.MediaCover; @@ -9,7 +10,7 @@ namespace Sonarr.Http.Frontend.Mappers { public class MediaCoverProxyMapper : IMapHttpRequestsToDisk { - private readonly Regex _regex = new Regex(@"/MediaCoverProxy/(?\w+)/(?(.+)\.(jpg|png|gif))"); + private readonly Regex _regex = new (@"/MediaCoverProxy/(?\w+)/(?(.+)\.(jpg|png|gif))"); private readonly IMediaCoverProxy _mediaCoverProxy; private readonly IContentTypeProvider _mimeTypeProvider; @@ -30,7 +31,7 @@ namespace Sonarr.Http.Frontend.Mappers return resourceUrl.StartsWith("/MediaCoverProxy/", StringComparison.InvariantCultureIgnoreCase); } - public IActionResult GetResponse(string resourceUrl) + public async Task GetResponse(string resourceUrl) { var match = _regex.Match(resourceUrl); @@ -42,7 +43,7 @@ namespace Sonarr.Http.Frontend.Mappers var hash = match.Groups["hash"].Value; var filename = match.Groups["filename"].Value; - var imageData = _mediaCoverProxy.GetImage(hash); + var imageData = await _mediaCoverProxy.GetImage(hash); if (!_mimeTypeProvider.TryGetContentType(filename, out var contentType)) { diff --git a/src/Sonarr.Http/Frontend/Mappers/StaticResourceMapperBase.cs b/src/Sonarr.Http/Frontend/Mappers/StaticResourceMapperBase.cs index 277060de1..d7e812af9 100644 --- a/src/Sonarr.Http/Frontend/Mappers/StaticResourceMapperBase.cs +++ b/src/Sonarr.Http/Frontend/Mappers/StaticResourceMapperBase.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Text; +using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.StaticFiles; using Microsoft.Net.Http.Headers; @@ -30,7 +31,7 @@ namespace Sonarr.Http.Frontend.Mappers public abstract bool CanHandle(string resourceUrl); - public IActionResult GetResponse(string resourceUrl) + public Task GetResponse(string resourceUrl) { var filePath = Map(resourceUrl); @@ -41,10 +42,10 @@ namespace Sonarr.Http.Frontend.Mappers contentType = "application/octet-stream"; } - return new FileStreamResult(GetContentStream(filePath), new MediaTypeHeaderValue(contentType) + return Task.FromResult(new FileStreamResult(GetContentStream(filePath), new MediaTypeHeaderValue(contentType) { Encoding = contentType == "text/plain" ? Encoding.UTF8 : null - }); + })); } _logger.Warn("File {0} not found", filePath); diff --git a/src/Sonarr.Http/Frontend/StaticResourceController.cs b/src/Sonarr.Http/Frontend/StaticResourceController.cs index b70b5e597..49bc495b7 100644 --- a/src/Sonarr.Http/Frontend/StaticResourceController.cs +++ b/src/Sonarr.Http/Frontend/StaticResourceController.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; +using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Mvc; @@ -25,27 +26,27 @@ namespace Sonarr.Http.Frontend [AllowAnonymous] [HttpGet("login")] - public IActionResult LoginPage() + public async Task LoginPage() { - return MapResource("login"); + return await MapResource("login"); } [EnableCors("AllowGet")] [AllowAnonymous] [HttpGet("/content/{**path:regex(^(?!api/).*)}")] - public IActionResult IndexContent([FromRoute] string path) + public async Task IndexContent([FromRoute] string path) { - return MapResource("Content/" + path); + return await MapResource("Content/" + path); } [HttpGet("")] [HttpGet("/{**path:regex(^(?!(api|feed)/).*)}")] - public IActionResult Index([FromRoute] string path) + public async Task Index([FromRoute] string path) { - return MapResource(path); + return await MapResource(path); } - private IActionResult MapResource(string path) + private async Task MapResource(string path) { path = "/" + (path ?? ""); @@ -53,7 +54,7 @@ namespace Sonarr.Http.Frontend if (mapper != null) { - var result = mapper.GetResponse(path); + var result = await mapper.GetResponse(path); if (result != null) {