using Application.Abstractions.Messaging; using Web.Api.Common; using Web.Api.Extensions; namespace Web.Api.Endpoints.Stocks; /// 경량 배치 시세 — codes=CSV(최대 50개), 코드/종가/등락률만 (관심종목 스트립용, 익명 열람) internal sealed class Quotes : IEndpoint { public void MapEndpoint(IEndpointRouteBuilder app) { app.MapGet("api/stocks/quotes", async ( ISender sender, string? codes = null, CancellationToken ct = default ) => { var codeList = (codes ?? string.Empty).Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries); var result = await sender.Send(new Application.Features.Api.Stocks.GetQuotes.Query(codeList), ct); return result.Match( () => ApiResponse.Ok(result.Value), CustomResults.Problem ); }) .WithTags("Stocks") .AllowAnonymous(); } }