ClickLink.cs 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using System.Security.Claims;
  2. using Web.Api.Common;
  3. using Web.Api.Extensions;
  4. using SharedKernel.Extensions;
  5. using MediatR;
  6. namespace Web.Api.Endpoints.Forum.Post;
  7. internal sealed class ClickLink : IEndpoint
  8. {
  9. public void MapEndpoint(IEndpointRouteBuilder app)
  10. {
  11. app.MapPost("api/forum/posts/links/{id}/click", async (
  12. int id,
  13. ClaimsPrincipal user,
  14. HttpContext httpContext,
  15. ISender sender,
  16. CancellationToken ct
  17. ) => {
  18. var memberID = user.GetMemberID();
  19. var command = new Application.Features.Api.Forum.PostLink.Click.Command(
  20. id,
  21. memberID,
  22. httpContext.GetClientIP(),
  23. httpContext.GetUserAgent()
  24. );
  25. var result = await sender.Send(command, ct);
  26. return result.Match(
  27. data => ApiResponse.Ok(data),
  28. CustomResults.Problem
  29. );
  30. })
  31. .WithTags("Forum")
  32. .AllowAnonymous();
  33. }
  34. }