aboutsummaryrefslogtreecommitdiffstats
path: root/code/api/Endpoints/Storage
diff options
context:
space:
mode:
Diffstat (limited to 'code/api/Endpoints/Storage')
-rw-r--r--code/api/Endpoints/Storage/Files/CreateEndpoint.cs2
-rw-r--r--code/api/Endpoints/Storage/Files/DeleteEndpoint.cs2
-rw-r--r--code/api/Endpoints/Storage/Files/PutEndpoint.cs2
-rw-r--r--code/api/Endpoints/Storage/Folders/CreateEndpoint.cs2
-rw-r--r--code/api/Endpoints/Storage/Folders/DeleteEndpoint.cs2
-rw-r--r--code/api/Endpoints/Storage/Shares/CreateShareEndpoint.cs2
-rw-r--r--code/api/Endpoints/Storage/Shares/DeleteShareEndpoint.cs2
-rw-r--r--code/api/Endpoints/Storage/Shares/EditShareEndpoint.cs2
-rw-r--r--code/api/Endpoints/Storage/TreeEndpoint.cs55
-rw-r--r--code/api/Endpoints/Storage/UploadEndpoint.cs100
10 files changed, 80 insertions, 91 deletions
diff --git a/code/api/Endpoints/Storage/Files/CreateEndpoint.cs b/code/api/Endpoints/Storage/Files/CreateEndpoint.cs
index c53a8e3..9206a36 100644
--- a/code/api/Endpoints/Storage/Files/CreateEndpoint.cs
+++ b/code/api/Endpoints/Storage/Files/CreateEndpoint.cs
@@ -1,4 +1,4 @@
-namespace I2R.Storage.Api.Endpoints.Storage.Files;
+namespace Quality.Storage.Api.Endpoints.Storage.Files;
public class CreateEndpoint
{
diff --git a/code/api/Endpoints/Storage/Files/DeleteEndpoint.cs b/code/api/Endpoints/Storage/Files/DeleteEndpoint.cs
index ab95d94..eae8f17 100644
--- a/code/api/Endpoints/Storage/Files/DeleteEndpoint.cs
+++ b/code/api/Endpoints/Storage/Files/DeleteEndpoint.cs
@@ -1,4 +1,4 @@
-namespace I2R.Storage.Api.Endpoints.Storage.Files;
+namespace Quality.Storage.Api.Endpoints.Storage.Files;
public class DeleteEndpoint
{
diff --git a/code/api/Endpoints/Storage/Files/PutEndpoint.cs b/code/api/Endpoints/Storage/Files/PutEndpoint.cs
index 129eeed..982d435 100644
--- a/code/api/Endpoints/Storage/Files/PutEndpoint.cs
+++ b/code/api/Endpoints/Storage/Files/PutEndpoint.cs
@@ -1,4 +1,4 @@
-namespace I2R.Storage.Api.Endpoints.Storage.Files;
+namespace Quality.Storage.Api.Endpoints.Storage.Files;
public class PutEndpoint
{
diff --git a/code/api/Endpoints/Storage/Folders/CreateEndpoint.cs b/code/api/Endpoints/Storage/Folders/CreateEndpoint.cs
index 2eb1352..398d500 100644
--- a/code/api/Endpoints/Storage/Folders/CreateEndpoint.cs
+++ b/code/api/Endpoints/Storage/Folders/CreateEndpoint.cs
@@ -1,4 +1,4 @@
-namespace I2R.Storage.Api.Endpoints.Storage.Folders;
+namespace Quality.Storage.Api.Endpoints.Storage.Folders;
public class CreateEndpoint
{
diff --git a/code/api/Endpoints/Storage/Folders/DeleteEndpoint.cs b/code/api/Endpoints/Storage/Folders/DeleteEndpoint.cs
index 73fa907..84d41c4 100644
--- a/code/api/Endpoints/Storage/Folders/DeleteEndpoint.cs
+++ b/code/api/Endpoints/Storage/Folders/DeleteEndpoint.cs
@@ -1,4 +1,4 @@
-namespace I2R.Storage.Api.Endpoints.Storage.Folders;
+namespace Quality.Storage.Api.Endpoints.Storage.Folders;
public class DeleteEndpoint
{
diff --git a/code/api/Endpoints/Storage/Shares/CreateShareEndpoint.cs b/code/api/Endpoints/Storage/Shares/CreateShareEndpoint.cs
index dd049e7..64eb97b 100644
--- a/code/api/Endpoints/Storage/Shares/CreateShareEndpoint.cs
+++ b/code/api/Endpoints/Storage/Shares/CreateShareEndpoint.cs
@@ -1,4 +1,4 @@
-namespace I2R.Storage.Api.Endpoints.Storage.Shares;
+namespace Quality.Storage.Api.Endpoints.Storage.Shares;
public class CreateShareEndpoint
{
diff --git a/code/api/Endpoints/Storage/Shares/DeleteShareEndpoint.cs b/code/api/Endpoints/Storage/Shares/DeleteShareEndpoint.cs
index ad85887..a8bf0fd 100644
--- a/code/api/Endpoints/Storage/Shares/DeleteShareEndpoint.cs
+++ b/code/api/Endpoints/Storage/Shares/DeleteShareEndpoint.cs
@@ -1,4 +1,4 @@
-namespace I2R.Storage.Api.Endpoints.Storage.Shares;
+namespace Quality.Storage.Api.Endpoints.Storage.Shares;
public class DeleteShareEndpoint
{
diff --git a/code/api/Endpoints/Storage/Shares/EditShareEndpoint.cs b/code/api/Endpoints/Storage/Shares/EditShareEndpoint.cs
index 30e4bf7..c1e8ea8 100644
--- a/code/api/Endpoints/Storage/Shares/EditShareEndpoint.cs
+++ b/code/api/Endpoints/Storage/Shares/EditShareEndpoint.cs
@@ -1,4 +1,4 @@
-namespace I2R.Storage.Api.Endpoints.Storage.Shares;
+namespace Quality.Storage.Api.Endpoints.Storage.Shares;
public class EditShareEndpoint
{
diff --git a/code/api/Endpoints/Storage/TreeEndpoint.cs b/code/api/Endpoints/Storage/TreeEndpoint.cs
index f832034..df2ed5e 100644
--- a/code/api/Endpoints/Storage/TreeEndpoint.cs
+++ b/code/api/Endpoints/Storage/TreeEndpoint.cs
@@ -1,33 +1,26 @@
-namespace I2R.Storage.Api.Endpoints.Storage;
+namespace Quality.Storage.Api.Endpoints.Storage;
-public class TreeEndpoint : EndpointBase
+public class TreeEndpoint(AppDatabase database, IPaginationService pagination) : EndpointBase
{
- private readonly AppDatabase _database;
- private readonly IPaginationService _pagination;
-
- public TreeEndpoint(AppDatabase database, IPaginationService pagination) {
- _database = database;
- _pagination = pagination;
- }
-
- [HttpGet("~/storage/tree")]
- public async Task<ActionResult<KeysetPaginationResult<FileSystemEntry>>> Handle(Guid parent = default) {
- return Ok(await _pagination.KeysetPaginateAsync(
- _database.Folders.Include(c => c.Files).ConditionalWhere(() => parent != default, folder => folder.ParentId == parent),
- b => b.Descending(a => a.Name),
- async id => await _database.Folders.FirstOrDefaultAsync(c => c.Id == id.AsGuid()),
- query => query.Select(p => new FileSystemEntry() {
- Id = p.Id,
- Name = p.Name,
- MimeType = SystemConstants.FolderMimeType,
- SizeInBytes = -1,
- Files = p.Files.Select(c => new FileSystemEntry() {
- Id = c.Id,
- Name = c.Name,
- MimeType = c.MimeType,
- SizeInBytes = c.SizeInBytes
- }).ToList()
- })
- ));
- }
-} \ No newline at end of file
+ [HttpGet("~/storage/tree")]
+ public async Task<ActionResult<KeysetPaginationResult<FileSystemEntry>>> Handle(Guid parent = default) {
+ return Ok(await pagination.KeysetPaginateAsync(database.Folders
+ .Include(c => c.Files)
+ .ConditionalWhere(() => parent != default, folder => folder.ParentId == parent),
+ b => b.Descending(a => a.Name),
+ async id => await database.Folders.FirstOrDefaultAsync(c => c.Id == id.AsGuid()),
+ query => query.Select(p => new FileSystemEntry {
+ Id = p.Id,
+ Name = p.Name,
+ MimeType = SystemConstants.FolderMimeType,
+ SizeInBytes = -1,
+ Files = p.Files.Select(c => new FileSystemEntry {
+ Id = c.Id,
+ Name = c.Name,
+ MimeType = c.MimeType,
+ SizeInBytes = c.SizeInBytes
+ })
+ .ToList()
+ })));
+ }
+}
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));
+ }
+}