DonationAlertConfigUpload.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using System.Security.Claims;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Web.Api.Common;
  4. using Web.Api.Extensions;
  5. using MediatR;
  6. namespace Web.Api.Endpoints.Studio.Donation;
  7. /// <summary>후원 알림 미디어 파일 업로드 (스튜디오 전용)</summary>
  8. internal sealed class DonationAlertConfigUpload : IEndpoint
  9. {
  10. public void MapEndpoint(IEndpointRouteBuilder app)
  11. {
  12. app.MapPost("api/studio/donation/alert/config/upload", async (
  13. IFormFile file,
  14. [FromForm] string type,
  15. [FromForm] int channelID,
  16. ClaimsPrincipal user,
  17. ISender sender,
  18. CancellationToken ct
  19. ) => {
  20. var memberID = user.GetRequiredMemberID();
  21. var result = await sender.Send(new Application.Features.Api.DonationAlert.UploadMedia.Command(
  22. channelID,
  23. memberID,
  24. type,
  25. file
  26. ), ct);
  27. return result.Match(
  28. url => ApiResponse.Ok(new {
  29. url
  30. }),
  31. CustomResults.Problem
  32. );
  33. })
  34. .WithTags("StudioDonationAlert")
  35. .RequireAuthorization()
  36. .DisableAntiforgery();
  37. }
  38. }