UpdatePrivacySettings.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System.Security.Claims;
  2. using Application.Abstractions.Messaging;
  3. using Web.Api.Common;
  4. using Web.Api.Extensions;
  5. namespace Web.Api.Endpoints.MyPage;
  6. internal sealed class UpdatePrivacySettings : IEndpoint
  7. {
  8. public sealed record Request(
  9. bool IsRankingPublic,
  10. bool IsDonationPublic
  11. );
  12. public void MapEndpoint(IEndpointRouteBuilder app)
  13. {
  14. app.MapPost("api/mypage/privacy-settings", async (
  15. Request request,
  16. ClaimsPrincipal user,
  17. ISender sender,
  18. CancellationToken ct
  19. ) => {
  20. var memberID = user.GetMemberID();
  21. if (memberID is null)
  22. {
  23. return ApiResponse.Fail(StatusCodes.Status401Unauthorized, "Invalid token");
  24. }
  25. var command = new Application.Features.Api.MyPage.UpdatePrivacySettings.Command(
  26. memberID.Value,
  27. request.IsRankingPublic,
  28. request.IsDonationPublic
  29. );
  30. var result = await sender.Send(command, ct);
  31. return result.Match(
  32. () => ApiResponse.Ok(),
  33. CustomResults.Problem
  34. );
  35. })
  36. .WithTags("MyPage")
  37. .RequireAuthorization();
  38. }
  39. }