Sync static resource controller with upstream

(cherry picked from commit ad1f185330a30a2a9d27c9d3f18d384e66727c2a)
This commit is contained in:
Bogdan
2023-09-16 15:07:39 +03:00
parent 3ed6ef0336
commit 840f2ae3e6
3 changed files with 15 additions and 12 deletions

View File

@@ -1,3 +1,4 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
namespace Prowlarr.Http.Frontend.Mappers namespace Prowlarr.Http.Frontend.Mappers
@@ -6,6 +7,6 @@ namespace Prowlarr.Http.Frontend.Mappers
{ {
string Map(string resourceUrl); string Map(string resourceUrl);
bool CanHandle(string resourceUrl); bool CanHandle(string resourceUrl);
FileStreamResult GetResponse(string resourceUrl); Task<FileStreamResult> GetResponse(string resourceUrl);
} }
} }

View File

@@ -1,6 +1,7 @@
using System; using System;
using System.IO; using System.IO;
using System.Text; using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.StaticFiles; using Microsoft.AspNetCore.StaticFiles;
using Microsoft.Net.Http.Headers; using Microsoft.Net.Http.Headers;
@@ -30,7 +31,7 @@ namespace Prowlarr.Http.Frontend.Mappers
public abstract bool CanHandle(string resourceUrl); public abstract bool CanHandle(string resourceUrl);
public FileStreamResult GetResponse(string resourceUrl) public Task<FileStreamResult> GetResponse(string resourceUrl)
{ {
var filePath = Map(resourceUrl); var filePath = Map(resourceUrl);
@@ -41,10 +42,10 @@ namespace Prowlarr.Http.Frontend.Mappers
contentType = "application/octet-stream"; 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 Encoding = contentType == "text/plain" ? Encoding.UTF8 : null
}); }));
} }
_logger.Warn("File {0} not found", filePath); _logger.Warn("File {0} not found", filePath);

View File

@@ -1,5 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
@@ -25,27 +26,27 @@ namespace Prowlarr.Http.Frontend
[AllowAnonymous] [AllowAnonymous]
[HttpGet("login")] [HttpGet("login")]
public IActionResult LoginPage() public async Task<IActionResult> LoginPage()
{ {
return MapResource("login"); return await MapResource("login");
} }
[EnableCors("AllowGet")] [EnableCors("AllowGet")]
[AllowAnonymous] [AllowAnonymous]
[HttpGet("/content/{**path:regex(^(?!api/).*)}")] [HttpGet("/content/{**path:regex(^(?!api/).*)}")]
public IActionResult IndexContent([FromRoute] string path) public async Task<IActionResult> IndexContent([FromRoute] string path)
{ {
return MapResource("Content/" + path); return await MapResource("Content/" + path);
} }
[HttpGet("")] [HttpGet("")]
[HttpGet("/{**path:regex(^(?!api/).*)}")] [HttpGet("/{**path:regex(^(?!api/).*)}")]
public IActionResult Index([FromRoute] string path) public async Task<IActionResult> Index([FromRoute] string path)
{ {
return MapResource(path); return await MapResource(path);
} }
private IActionResult MapResource(string path) private async Task<IActionResult> MapResource(string path)
{ {
path = "/" + (path ?? ""); path = "/" + (path ?? "");
@@ -53,7 +54,7 @@ namespace Prowlarr.Http.Frontend
if (mapper != null) if (mapper != null)
{ {
var result = mapper.GetResponse(path); var result = await mapper.GetResponse(path);
if (result != null) if (result != null)
{ {