IssueDonationCode.cs 967 B

1234567891011121314151617181920212223242526272829303132
  1. using System.Security.Claims;
  2. using MediatR;
  3. using Web.Api.Common;
  4. using Web.Api.Extensions;
  5. namespace Web.Api.Endpoints.Studio.Settings;
  6. /// <summary>채널 후원 코드 발급 — 1회성, 변경 불가</summary>
  7. internal sealed class IssueDonationCode : IEndpoint
  8. {
  9. public sealed record Body(string Code);
  10. public void MapEndpoint(IEndpointRouteBuilder app)
  11. {
  12. app.MapPost("api/studio/donation-code", async (
  13. Body body,
  14. ClaimsPrincipal user,
  15. ISender sender,
  16. CancellationToken ct
  17. ) => {
  18. var memberID = user.GetRequiredMemberID();
  19. var result = await sender.Send(new Application.Features.Api.Studio.IssueDonationCode.Command(memberID, body.Code), ct);
  20. return result.Match(
  21. data => ApiResponse.Ok(data),
  22. CustomResults.Problem
  23. );
  24. })
  25. .WithTags("Studio")
  26. .RequireAuthorization();
  27. }
  28. }