From 8a80c69b916cac27c6039253d4f77fb7ec0756e0 Mon Sep 17 00:00:00 2001 From: pancakes Date: Sat, 22 Jun 2024 13:31:28 +1000 Subject: [PATCH] [backend/api] Create all required fields and return EmojiResponse --- .../Controllers/AdminController.cs | 33 ++++++++++++++----- Iceshrimp.Shared/Schemas/EmojiResponse.cs | 12 +++++++ 2 files changed, 36 insertions(+), 9 deletions(-) create mode 100644 Iceshrimp.Shared/Schemas/EmojiResponse.cs diff --git a/Iceshrimp.Backend/Controllers/AdminController.cs b/Iceshrimp.Backend/Controllers/AdminController.cs index 3a9ae3c2..f924d62b 100644 --- a/Iceshrimp.Backend/Controllers/AdminController.cs +++ b/Iceshrimp.Backend/Controllers/AdminController.cs @@ -214,8 +214,8 @@ public class AdminController( [HttpPost("emoji")] [Produces(MediaTypeNames.Application.Json)] - [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(Emoji))] - public async Task UploadEmoji(IFormFile file) + [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(EmojiResponse))] + public async Task UploadEmoji(IFormFile file, [FromServices] IOptions config) { var user = await sysUserSvc.GetInstanceActorAsync(); var request = new DriveFileCreationRequest @@ -224,20 +224,35 @@ public class AdminController( MimeType = file.ContentType, IsSensitive = false }; - var res = await driveSvc.StoreFile(file.OpenReadStream(), user, request); + var driveFile = await driveSvc.StoreFile(file.OpenReadStream(), user, request); + var id = IdHelpers.GenerateSlowflakeId(); var emoji = new Emoji { - Id = IdHelpers.GenerateSlowflakeId(), - Name = res.Name, - UpdatedAt = DateTime.UtcNow, - OriginalUrl = res.Url, - PublicUrl = res.PublicUrl + Id = id, + Name = id, + UpdatedAt = DateTime.UtcNow, + OriginalUrl = driveFile.Url, + PublicUrl = driveFile.PublicUrl, + Width = driveFile.Properties.Width, + Height = driveFile.Properties.Height }; + emoji.Uri = emoji.GetPublicUri(config.Value); await db.AddAsync(emoji); await db.SaveChangesAsync(); - return Ok(emoji); + var res = new EmojiResponse + { + Id = emoji.Id, + Name = emoji.Name, + Uri = emoji.Uri, + Aliases = [], + Category = null, + PublicUrl = emoji.PublicUrl, + License = null + }; + + return Ok(res); } } diff --git a/Iceshrimp.Shared/Schemas/EmojiResponse.cs b/Iceshrimp.Shared/Schemas/EmojiResponse.cs new file mode 100644 index 00000000..ad9400b3 --- /dev/null +++ b/Iceshrimp.Shared/Schemas/EmojiResponse.cs @@ -0,0 +1,12 @@ +namespace Iceshrimp.Shared.Schemas; + +public class EmojiResponse +{ + public required string Id { get; set; } + public required string Name { get; set; } + public required string? Uri { get; set; } + public required List Aliases { get; set; } + public required string? Category { get; set; } + public required string PublicUrl { get; set; } + public required string? License { get; set; } +} \ No newline at end of file