Files
server/extra/admin-api/Spacebar.UApi/Controllers/GuildMembersController.cs
Rory& e5b7977f2a
Some checks failed
Build docker images / build (api) (push) Failing after 26s
Build docker images / build (cdn) (push) Failing after 26s
Build docker images / build (cdn-cs) (push) Failing after 26s
Build docker images / build (default) (push) Failing after 25s
Build docker images / build (gateway) (push) Failing after 38s
Build docker images / build (gateway-offload) (push) Failing after 26s
Build docker images / build (admin-api) (push) Failing after 4m11s
Style / build (24.x) (push) Failing after 45s
Build / build (24.x) (push) Failing after 42s
Nix build / build-nix (push) Failing after 20s
cs: create uapi project
2026-02-13 06:12:18 +01:00

36 lines
1.5 KiB
C#

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<GuildMembersController> logger, SpacebarDbContext db, SpacebarAspNetAuthenticationService authService) : ControllerBase {
/// <summary>
/// Get a guild member by ID
/// </summary>
/// <param name="guildId">Guild ID</param>
/// <param name="memberId">Member ID</param>
/// <returns>The public member projection</returns>
/// <exception cref="InvalidOperationException">An error has occured</exception>
[HttpGet("{memberId}")]
public async Task<Member> 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();
}
}