From 0c70a237709441b7ebb3172e3eb3af6142d04376 Mon Sep 17 00:00:00 2001 From: Laura Hausmann Date: Tue, 27 Feb 2024 03:46:27 +0100 Subject: [PATCH] [backend/masto-client] Add custom emoji endpoints (ISH-104) --- .../Mastodon/InstanceController.cs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Iceshrimp.Backend/Controllers/Mastodon/InstanceController.cs b/Iceshrimp.Backend/Controllers/Mastodon/InstanceController.cs index ee7d719e..fcbf1fca 100644 --- a/Iceshrimp.Backend/Controllers/Mastodon/InstanceController.cs +++ b/Iceshrimp.Backend/Controllers/Mastodon/InstanceController.cs @@ -1,6 +1,7 @@ using System.Net.Mime; using Iceshrimp.Backend.Controllers.Mastodon.Attributes; using Iceshrimp.Backend.Controllers.Mastodon.Schemas; +using Iceshrimp.Backend.Controllers.Mastodon.Schemas.Entities; using Iceshrimp.Backend.Core.Configuration; using Iceshrimp.Backend.Core.Database; using Microsoft.AspNetCore.Cors; @@ -18,6 +19,7 @@ namespace Iceshrimp.Backend.Controllers.Mastodon; public class InstanceController(DatabaseContext db) : ControllerBase { [HttpGet("/api/v1/instance")] + [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(InstanceInfoV1Response))] public async Task GetInstanceInfoV1([FromServices] IOptionsSnapshot config) { var userCount = @@ -35,6 +37,7 @@ public class InstanceController(DatabaseContext db) : ControllerBase } [HttpGet("/api/v2/instance")] + [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(InstanceInfoV2Response))] public async Task GetInstanceInfoV2([FromServices] IOptionsSnapshot config) { var cutoff = DateTime.UtcNow - TimeSpan.FromDays(30); @@ -50,4 +53,22 @@ public class InstanceController(DatabaseContext db) : ControllerBase return Ok(res); } + + [HttpGet("/api/v1/custom_emojis")] + [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(IEnumerable))] + public async Task GetCustomEmojis() + { + var res = await db.Emojis.Where(p => p.Host == null) + .Select(p => new EmojiEntity + { + Id = p.Id, + Shortcode = p.Name, + Url = p.PublicUrl, + StaticUrl = p.PublicUrl, //TODO + VisibleInPicker = true + }) + .ToListAsync(); + + return Ok(res); + } } \ No newline at end of file