void.cat/VoidCat/Controllers/DownloadController.cs
2023-12-21 23:21:19 +00:00

45 lines
1.3 KiB
C#

using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using VoidCat.Model;
using VoidCat.Services.Abstractions;
using VoidCat.Services.Files;
namespace VoidCat.Controllers;
[Route("d")]
public class DownloadController : BaseDownloadController
{
public DownloadController(FileStoreFactory storage, ILogger<DownloadController> logger, FileInfoManager fileInfo,
IPaymentOrderStore paymentOrderStore, VoidSettings settings, IPaymentFactory paymentFactory)
: base(settings, fileInfo, paymentOrderStore, paymentFactory, logger, storage)
{
}
[HttpHead]
[HttpOptions]
[Route("{id}")]
[EnableCors("*")]
public Task DownloadFileOptions([FromRoute] string id)
{
var gid = id.FromBase58Guid();
return SetupDownload(gid);
}
/// <summary>
/// Download a specific file by Id
/// </summary>
/// <param name="id"></param>
[ResponseCache(Location = ResponseCacheLocation.Any, Duration = 86400)]
[HttpGet]
[Route("{id}")]
[EnableCors("*")]
public async Task DownloadFile([FromRoute] string id)
{
var gid = id.FromBase58Guid();
var voidFile = await SetupDownload(gid);
if (voidFile == default) return;
await SendResponse(id, voidFile);
}
}