using System.Security.Claims; using MediatR; using Web.Api.Common; using Web.Api.Extensions; namespace Web.Api.Endpoints.Studio.Settings; /// 채널 후원 코드 발급 — 1회성, 변경 불가 internal sealed class IssueDonationCode : IEndpoint { public sealed record Body(string Code); public void MapEndpoint(IEndpointRouteBuilder app) { app.MapPost("api/studio/donation-code", async ( Body body, ClaimsPrincipal user, ISender sender, CancellationToken ct ) => { var memberID = user.GetRequiredMemberID(); var result = await sender.Send(new Application.Features.Api.Studio.IssueDonationCode.Command(memberID, body.Code), ct); return result.Match( data => ApiResponse.Ok(data), CustomResults.Problem ); }) .WithTags("Studio") .RequireAuthorization(); } }