From e5b7977f2ae07b42e3be2dbbf79c450b8176ed19 Mon Sep 17 00:00:00 2001 From: Rory& Date: Fri, 13 Feb 2026 06:12:01 +0100 Subject: cs: create uapi project --- .../Controllers/GuildMembersController.cs | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 extra/admin-api/Spacebar.UApi/Controllers/GuildMembersController.cs (limited to 'extra/admin-api/Spacebar.UApi/Controllers/GuildMembersController.cs') diff --git a/extra/admin-api/Spacebar.UApi/Controllers/GuildMembersController.cs b/extra/admin-api/Spacebar.UApi/Controllers/GuildMembersController.cs new file mode 100644 index 00000000..ac8c1d40 --- /dev/null +++ b/extra/admin-api/Spacebar.UApi/Controllers/GuildMembersController.cs @@ -0,0 +1,36 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using Spacebar.Interop.Authentication.AspNetCore; +using Spacebar.Models.Db.Contexts; +using Spacebar.DataMappings.Generic; +using Spacebar.Models.Generic; + +namespace Spacebar.UApi.Controllers; + +[Route("/api/v{_}/guilds/{guildId}/members/")] +public class GuildMembersController(ILogger logger, SpacebarDbContext db, SpacebarAspNetAuthenticationService authService) : ControllerBase { + /// + /// Get a guild member by ID + /// + /// Guild ID + /// Member ID + /// The public member projection + /// An error has occured + [HttpGet("{memberId}")] + public async Task GetMemberAsync(string guildId, string memberId) { + var user = await authService.GetCurrentUserAsync(Request); + var cmember = db.Members.SingleOrDefault(x => x.Id == user.Id && x.GuildId == guildId); + if (cmember is null) + throw new InvalidOperationException("You are not a member of this guild."); + + var member = db.Members + .Include(x => x.IdNavigation) // User object + .Include(x => x.Roles) + .SingleOrDefault(x => x.Id == user.Id && x.GuildId == guildId); + + if (member is null) + throw new InvalidOperationException("Member not found"); + + return member.ToPublicMember(); + } +} \ No newline at end of file -- cgit 1.5.1