SeibroShortmIssuParser.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. namespace Infrastructure.StockData;
  2. /// <summary>
  3. /// SEIBro getShortmIssuInfo(단기금융증권 발행내역, CD/CP/전단채) 응답 파서 — 순수 C#. 공용 SeibroXml envelope 입력.
  4. /// 자연키 ISIN 없으면 건너뛴다. SECN_TPCD·ISSU_DT 는 응답에 없어 요청 파라미터를 배치가 스탬핑한다(여기선 필드만 매핑).
  5. /// </summary>
  6. public static class SeibroShortmIssuParser
  7. {
  8. public sealed record Row(
  9. string Isin,
  10. string? KorSecnNm,
  11. int? IssucoCustno,
  12. string? IssucoCustNm
  13. );
  14. public static IReadOnlyList<Row> Parse(SeibroXml.Envelope envelope)
  15. {
  16. var rows = new List<Row>();
  17. foreach (var fields in envelope.Rows)
  18. {
  19. var isin = SeibroXml.GetOrNull(fields, "ISIN")?.Trim();
  20. if (string.IsNullOrEmpty(isin))
  21. {
  22. continue;
  23. }
  24. rows.Add(new Row(
  25. isin,
  26. SeibroXml.GetOrNull(fields, "KOR_SECN_NM")?.Trim(),
  27. SeibroFieldParse.Int(SeibroXml.GetOrNull(fields, "ISSUCO_CUSTNO")),
  28. SeibroXml.GetOrNull(fields, "ISSUCO_CUST_NM")?.Trim()
  29. ));
  30. }
  31. return rows;
  32. }
  33. }