aboutsummaryrefslogtreecommitdiffstats
path: root/code/api/Endpoints/Storage/UploadEndpoint.cs
diff options
context:
space:
mode:
authorivar <i@oiee.no>2024-03-19 01:02:22 +0100
committerivar <i@oiee.no>2024-03-19 01:02:22 +0100
commit5f604b3052dab1d51dc130df2470bf330b283ec6 (patch)
treeae00e1fe4542850467555b4e3af41964ba8d878b /code/api/Endpoints/Storage/UploadEndpoint.cs
parent63cf177e8cf22e349534664d59a6926f8b36863d (diff)
downloadstorage-5f604b3052dab1d51dc130df2470bf330b283ec6.tar.xz
storage-5f604b3052dab1d51dc130df2470bf330b283ec6.zip
Max lenghts on db schema
Use latest temporal from cdn Implement majority of translation functionality Major refinements/bugs
Diffstat (limited to 'code/api/Endpoints/Storage/UploadEndpoint.cs')
-rw-r--r--code/api/Endpoints/Storage/UploadEndpoint.cs100
1 files changed, 48 insertions, 52 deletions
diff --git a/code/api/Endpoints/Storage/UploadEndpoint.cs b/code/api/Endpoints/Storage/UploadEndpoint.cs
index e3feffb..fa828ae 100644
--- a/code/api/Endpoints/Storage/UploadEndpoint.cs
+++ b/code/api/Endpoints/Storage/UploadEndpoint.cs
@@ -1,61 +1,57 @@
-using File = I2R.Storage.Api.Database.Models.File;
+using Quality.Storage.Api.Services.Abstractions;
+using File = Quality.Storage.Api.Database.Models.File;
-namespace I2R.Storage.Api.Endpoints.Storage;
+namespace Quality.Storage.Api.Endpoints.Storage;
-public class UploadEndpoint : EndpointBase
+public class UploadEndpoint(
+ IResourceService resourceService,
+ IStringLocalizer<SharedResources> localizer,
+ AppDatabase database,
+ StorageService storageService
+) : EndpointBase
{
- private readonly DefaultResourceService _resourceService;
- private readonly IStringLocalizer<SharedResources> _localizer;
- private readonly AppDatabase _database;
- private readonly StorageService _storageService;
+ public new class Request
+ {
+ public IFormFileCollection FormFileCollection { get; set; }
+ public Guid FolderId { get; set; }
+ }
- public UploadEndpoint(DefaultResourceService resourceService, IStringLocalizer<SharedResources> localizer, AppDatabase database, StorageService storageService) {
- _resourceService = resourceService;
- _localizer = localizer;
- _database = database;
- _storageService = storageService;
- }
+ [HttpPost("~/storage/upload")]
+ public async Task<ActionResult> Handle(Request request) {
+ var folder = await storageService.GetFileSystemEntryAsync(request.FolderId);
+ if (folder == default) {
+ return NotFound();
+ }
- public class Request
- {
- public IFormFileCollection FormFileCollection { get; set; }
- public Guid FolderId { get; set; }
- }
+ var problem = new KnownProblemModel();
+ foreach (var formFile in request.FormFileCollection) {
+ if (!formFile.FileName.IsValidFileName()) {
+ problem.AddError("file_" + formFile.Name, localizer["{fileName} is an invalid file name"]);
+ continue;
+ }
- [HttpPost("~/storage/upload")]
- public async Task<ActionResult> Handle(Request request) {
- var folder = await _storageService.GetFileSystemEntryAsync(request.FolderId);
- if (folder == default) {
- return NotFound();
- }
-
- var problem = new KnownProblemModel();
- foreach (var formFile in request.FormFileCollection) {
- if (!formFile.FileName.IsValidFileName()) {
- problem.AddError("file_" + formFile.Name, _localizer["{fileName} is an invalid file name"]);
- continue;
- }
+ if (problem.Errors.Count != 0) {
+ return KnownProblem(problem);
+ }
- if (problem.Errors.Any()) {
- return KnownProblem(problem);
- }
+ var file = new File(LoggedInUser.Id) {
+ Name = formFile.FileName,
+ FolderId = folder.Id,
+ MimeType = formFile.ContentType,
+ SizeInBytes = formFile.Length,
+ OwningUserId = LoggedInUser.Id
+ };
- var file = new File(LoggedInUser.Id) {
- Name = formFile.FileName,
- FolderId = folder.Id,
- MimeType = formFile.ContentType,
- SizeInBytes = formFile.Length,
- OwningUserId = LoggedInUser.Id
- };
- var id = new StorageBlobId() {
- Id = file.Id,
- Bucket = LoggedInUser.Id
- };
- await _resourceService.SetBlobAsync(id, formFile.OpenReadStream());
- await _database.Files.AddAsync(file);
- await _database.SaveChangesAsync();
- }
+ var id = new StorageBlobId {
+ Id = file.Id,
+ Bucket = LoggedInUser.Id
+ };
- return Ok(await _storageService.GetFileSystemEntryAsync(folder.Id));
- }
-} \ No newline at end of file
+ await resourceService.SetBlobAsync(id, formFile.OpenReadStream());
+ await database.Files.AddAsync(file);
+ await database.SaveChangesAsync();
+ }
+
+ return Ok(await storageService.GetFileSystemEntryAsync(folder.Id));
+ }
+}