diff --git a/LANCommander/Controllers/DownloadController.cs b/LANCommander/Controllers/DownloadController.cs new file mode 100644 index 0000000..a4c27c8 --- /dev/null +++ b/LANCommander/Controllers/DownloadController.cs @@ -0,0 +1,36 @@ +using LANCommander.Data; +using LANCommander.Extensions; +using LANCommander.Models; +using LANCommander.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; + +namespace LANCommander.Controllers +{ + [Authorize(Roles = "Administrator")] + public class DownloadController : Controller + { + private readonly ArchiveService ArchiveService; + + public DownloadController(ArchiveService archiveService) + { + ArchiveService = archiveService; + } + + public async Task Game(Guid id) + { + var archive = await ArchiveService.Get(id); + + if (archive == null) + return NotFound(); + + var filename = Path.Combine("Upload", archive.ObjectKey); + + if (!System.IO.File.Exists(filename)) + return NotFound(); + + return File(new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read), "application/octet-stream", $"{archive.Game.Title.SanitizeFilename()}.zip"); + } + } +} diff --git a/LANCommander/Pages/Games/Components/ArchiveUploader.razor b/LANCommander/Pages/Games/Components/ArchiveUploader.razor index e9def81..9e7a7c7 100644 --- a/LANCommander/Pages/Games/Components/ArchiveUploader.razor +++ b/LANCommander/Pages/Games/Components/ArchiveUploader.razor @@ -21,6 +21,9 @@ + +