SeibroBassetUnredScaleParser.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132
  1. namespace Infrastructure.StockData;
  2. /// <summary>
  3. /// SEIBro getBassetUnredScale(기초자산별 미상환규모) 응답 파서 — 순수 C#. 공용 SeibroXml envelope 입력.
  4. /// 실샘플 래퍼 = &lt;result&gt; **소문자** (readme §1 확정 — getDerivCombiIssuInfo·getBassetUnredScale 2종만 소문자).
  5. /// 응답 필드는 BassetContent·UnredSecncnt·UnredRema 3종 — StdDt·StndBassetCd·SecnTpcd 는 배치가 요청 파라미터를 스탬핑.
  6. /// ⚠️ 실샘플에서 UNRED_REMA 가 빈 value(SeibroXml 이 키 제외 → null) 케이스 존재 — decimal? null 방어. 종목당 1행이라 첫 행만 의미.
  7. /// </summary>
  8. public static class SeibroBassetUnredScaleParser
  9. {
  10. public sealed record Row(
  11. string? BassetContent,
  12. int? UnredSecncnt,
  13. decimal? UnredRema
  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. rows.Add(new Row(
  21. SeibroXml.GetOrNull(fields, "BASSET_CONTENT")?.Trim(),
  22. SeibroFieldParse.Int(SeibroXml.GetOrNull(fields, "UNRED_SECNCNT")),
  23. SeibroFieldParse.Decimal(SeibroXml.GetOrNull(fields, "UNRED_REMA"))
  24. ));
  25. }
  26. return rows;
  27. }
  28. }