From f6957ba4dea80b3ef8fd18ab41cef20dfb545298 Mon Sep 17 00:00:00 2001 From: Kopper Date: Mon, 20 Jan 2025 15:24:26 +0300 Subject: [PATCH] [backend/masto-client] Implement /api/v1/accounts (Get multiple accounts) --- .../Controllers/Mastodon/AccountController.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Iceshrimp.Backend/Controllers/Mastodon/AccountController.cs b/Iceshrimp.Backend/Controllers/Mastodon/AccountController.cs index eb695707..3f082d72 100644 --- a/Iceshrimp.Backend/Controllers/Mastodon/AccountController.cs +++ b/Iceshrimp.Backend/Controllers/Mastodon/AccountController.cs @@ -167,6 +167,23 @@ public class AccountController( return await VerifyUserCredentials(); } + + [HttpGet] + [ProducesResults(HttpStatusCode.OK)] + [ProducesErrors(HttpStatusCode.Forbidden)] + public async Task> GetManyUsers([FromQuery(Name = "id")] List ids) + { + var localUser = HttpContext.GetUser(); + if (config.Value.PublicPreview == Enums.PublicPreview.Lockdown && localUser == null) + throw GracefulException.Forbidden("Public preview is disabled on this instance"); + + var query = db.Users.IncludeCommonProperties().Where(p => ids.Contains(p.Id)); + + if (config.Value.PublicPreview <= Enums.PublicPreview.Restricted && localUser == null) + query = query.Where(p => p.IsLocalUser); + + return await userRenderer.RenderManyAsync(await query.ToArrayAsync(), localUser); + } [HttpGet("{id}")] [ProducesResults(HttpStatusCode.OK)]