Options.cs 1.0 KB

12345678910111213141516171819202122232425262728
  1. using Application.Abstractions.Messaging;
  2. using Domain.Entities.Stocks.ValueObject;
  3. using Web.Api.Common;
  4. namespace Web.Api.Endpoints.Market;
  5. /// <summary>옵션(일반/주식유가/주식코스닥) 목록 — 상품군·세션(기본 정규, 2=야간)별 지정일(미지정 시 최신 거래일) 페이징 (익명 열람). KRX 파생상품 수집.</summary>
  6. internal sealed class Options : IEndpoint
  7. {
  8. public void MapEndpoint(IEndpointRouteBuilder app)
  9. {
  10. app.MapGet("api/market/options", async (
  11. ISender sender,
  12. OptionsKind kind = OptionsKind.General,
  13. DateOnly? date = null,
  14. int page = 1,
  15. ushort perPage = 20,
  16. MarketSession session = MarketSession.Regular,
  17. CancellationToken ct = default
  18. ) => {
  19. var result = await sender.Send(new Application.Features.Api.Stocks.GetOptions.Query(kind, date, page, perPage, session), ct);
  20. return ApiResponse.Ok(result);
  21. })
  22. .WithTags("Market")
  23. .AllowAnonymous();
  24. }
  25. }