Quotes.cs 1002 B

1234567891011121314151617181920212223242526272829
  1. using Application.Abstractions.Messaging;
  2. using Web.Api.Common;
  3. using Web.Api.Extensions;
  4. namespace Web.Api.Endpoints.Stocks;
  5. /// <summary>경량 배치 시세 — codes=CSV(최대 50개), 코드/종가/등락률만 (관심종목 스트립용, 익명 열람)</summary>
  6. internal sealed class Quotes : IEndpoint
  7. {
  8. public void MapEndpoint(IEndpointRouteBuilder app)
  9. {
  10. app.MapGet("api/stocks/quotes", async (
  11. ISender sender,
  12. string? codes = null,
  13. CancellationToken ct = default
  14. ) => {
  15. var codeList = (codes ?? string.Empty).Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
  16. var result = await sender.Send(new Application.Features.Api.Stocks.GetQuotes.Query(codeList), ct);
  17. return result.Match(
  18. () => ApiResponse.Ok(result.Value),
  19. CustomResults.Problem
  20. );
  21. })
  22. .WithTags("Stocks")
  23. .AllowAnonymous();
  24. }
  25. }