GoogleLogin.cs 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using SharedKernel.Extensions;
  2. using MediatR;
  3. using Web.Api.Extensions;
  4. using Web.Api.Common;
  5. namespace Web.Api.Endpoints.Auth;
  6. internal sealed class GoogleLogin : IEndpoint
  7. {
  8. public sealed record Request(
  9. string Credential
  10. );
  11. public void MapEndpoint(IEndpointRouteBuilder app)
  12. {
  13. app.MapPost("api/auth/google-login", async (
  14. Request request,
  15. HttpContext httpContext,
  16. ISender sender,
  17. CancellationToken ct
  18. ) => {
  19. var ipAddress = httpContext.GetClientIP();
  20. var userAgent = httpContext.GetUserAgent();
  21. var command = new Application.Features.Api.Auth.GoogleLogin.Command(
  22. request.Credential,
  23. ipAddress,
  24. userAgent
  25. );
  26. var result = await sender.Send(command, ct);
  27. return result.Match(
  28. data => ApiResponse.Ok(data),
  29. CustomResults.Problem
  30. );
  31. })
  32. .WithTags("Auth")
  33. .AllowAnonymous();
  34. }
  35. }