diff options
| author | ivar <i@oiee.no> | 2024-03-19 01:02:22 +0100 |
|---|---|---|
| committer | ivar <i@oiee.no> | 2024-03-19 01:02:22 +0100 |
| commit | 5f604b3052dab1d51dc130df2470bf330b283ec6 (patch) | |
| tree | ae00e1fe4542850467555b4e3af41964ba8d878b /code/api/Endpoints/Storage/UploadEndpoint.cs | |
| parent | 63cf177e8cf22e349534664d59a6926f8b36863d (diff) | |
| download | storage-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.cs | 100 |
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)); + } +} |
