SeibroDerivCombiIssuParser.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. namespace Infrastructure.StockData;
  2. /// <summary>
  3. /// SEIBro getDerivCombiIssuInfo(파생결합증권 발행내역) 응답 파서 — 순수 C#. 공용 SeibroXml envelope 입력.
  4. /// 실샘플 래퍼 = &lt;result&gt; **소문자** (readme §1 확정 — getDerivCombiIssuInfo·getBassetUnredScale 2종만 소문자).
  5. /// SeibroXml 이 대소문자를 무시해 흡수하지만 fixture 테스트 기대값은 파일별 실제 래퍼 기준으로 작성한다.
  6. /// 응답 필드는 Isin·KorSecnNm·IssucoCustno 3종뿐 — SecnKacd·IssuDt 는 배치가 요청 파라미터를 스탬핑. 자연키 ISIN 없으면 스킵.
  7. /// </summary>
  8. public static class SeibroDerivCombiIssuParser
  9. {
  10. public sealed record Row(
  11. string Isin,
  12. string? KorSecnNm,
  13. int? IssucoCustno
  14. );
  15. public static IReadOnlyList<Row> Parse(SeibroXml.Envelope envelope)
  16. {
  17. var rows = new List<Row>();
  18. foreach (var fields in envelope.Rows)
  19. {
  20. var isin = SeibroXml.GetOrNull(fields, "ISIN")?.Trim();
  21. if (string.IsNullOrEmpty(isin))
  22. {
  23. continue;
  24. }
  25. rows.Add(new Row(
  26. isin,
  27. SeibroXml.GetOrNull(fields, "KOR_SECN_NM")?.Trim(),
  28. SeibroFieldParse.Int(SeibroXml.GetOrNull(fields, "ISSUCO_CUSTNO"))
  29. ));
  30. }
  31. return rows;
  32. }
  33. }