using MareSynchronos.API; using MareSynchronosShared.Utils; using MareSynchronosStaticFilesServer.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace MareSynchronosStaticFilesServer.Controllers; [Route(MareFiles.ServerFiles)] public class ServerFilesController : ControllerBase { private readonly CachedFileProvider _cachedFileProvider; public ServerFilesController(ILogger logger, CachedFileProvider cachedFileProvider, ServerTokenGenerator generator) : base(logger, generator) { _cachedFileProvider = cachedFileProvider; } [HttpGet(MareFiles.ServerFiles_Get + "/{fileId}")] [Authorize(Policy = "Internal")] public async Task GetFile(string fileId) { _logger.LogInformation($"GetFile:{MareUser}:{fileId}"); var fs = _cachedFileProvider.GetLocalFileStream(fileId); if (fs == null) return NotFound(); return File(fs, "application/octet-stream"); } }