void.cat/VoidCat/Controllers/UploadController.cs

52 lines
1.4 KiB
C#
Raw Normal View History

2022-01-25 16:17:48 +00:00
using Microsoft.AspNetCore.Mvc;
2022-01-25 23:39:51 +00:00
using Newtonsoft.Json;
2022-01-25 16:17:48 +00:00
using VoidCat.Model;
using VoidCat.Services;
namespace VoidCat.Controllers
{
[Route("upload")]
public class UploadController : Controller
{
2022-01-25 23:39:51 +00:00
private readonly IFileStorage _storage;
2022-01-25 16:17:48 +00:00
2022-01-25 23:39:51 +00:00
public UploadController(IFileStorage storage)
2022-01-25 16:17:48 +00:00
{
2022-01-25 23:39:51 +00:00
_storage = storage;
2022-01-25 16:17:48 +00:00
}
[HttpPost]
2022-01-25 23:39:51 +00:00
[DisableRequestSizeLimit]
public Task<InternalVoidFile> UploadFile()
2022-01-25 16:17:48 +00:00
{
return Request.HasFormContentType ?
2022-01-25 23:39:51 +00:00
saveFromForm() : _storage.Ingress(Request.Body, HttpContext.RequestAborted);
2022-01-25 16:17:48 +00:00
}
2022-01-25 23:39:51 +00:00
[HttpGet]
[Route("{id}")]
public Task<VoidFile?> GetInfo([FromRoute] string id)
2022-01-25 16:17:48 +00:00
{
2022-01-25 23:39:51 +00:00
return _storage.Get(id.FromBase58Guid());
2022-01-25 16:17:48 +00:00
}
2022-01-25 23:39:51 +00:00
[HttpPatch]
[Route("{id}")]
public Task UpdateFileInfo([FromRoute]string id, [FromBody]UpdateFileInfoRequest request)
{
return _storage.UpdateInfo(new VoidFile()
{
Id = id.FromBase58Guid(),
Metadata = request.Metadata
}, request.EditSecret);
}
private Task<InternalVoidFile> saveFromForm()
{
return Task.FromResult<InternalVoidFile>(null);
}
public record UpdateFileInfoRequest([JsonConverter(typeof(Base58GuidConverter))] Guid EditSecret, VoidFileMeta Metadata);
2022-01-25 16:17:48 +00:00
}
}