Files
ClubPenguinServer/MareSynchronosServer/MareSynchronosStaticFilesServer/FilesController.cs
rootdarkarchon 9eb5967935 rework server responsibilities (#18)
* rework server responsibilities
add remote configuration

* start metrics only when compiled as not debug

* add some more logging to discord bot

* fixes of some casts

* make metrics port configurable, minor fixes

* add docker bullshit

* md formatting

* adjustments to docker stuff

* fix docker json files, fix some stuff in discord bot, add /useradd for Discord bot

* adjust docker configs and fix sharded.bat

* fixes for logs, cache file provider repeat trying to open filestream

Co-authored-by: rootdarkarchon <root.darkarchon@outlook.com>
2022-12-27 13:48:05 +01:00

30 lines
1007 B
C#

using Microsoft.AspNetCore.Mvc;
using System.Security.Claims;
namespace MareSynchronosStaticFilesServer;
[Route("/cache")]
public class FilesController : Controller
{
private readonly ILogger<FilesController> _logger;
private readonly CachedFileProvider _cachedFileProvider;
public FilesController(ILogger<FilesController> logger, CachedFileProvider cachedFileProvider)
{
_logger = logger;
_cachedFileProvider = cachedFileProvider;
}
[HttpGet("{fileId}")]
public async Task<IActionResult> GetFile(string fileId)
{
var authedUser = HttpContext.User.Claims.FirstOrDefault(f => string.Equals(f.Type, ClaimTypes.NameIdentifier, StringComparison.Ordinal))?.Value ?? "Unknown";
_logger.LogInformation($"GetFile:{authedUser}:{fileId}");
var fs = await _cachedFileProvider.GetFileStream(fileId, Request.Headers["Authorization"]);
if (fs == null) return NotFound();
return File(fs, "application/octet-stream");
}
}