SeibroNationFrsecCusParser.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. namespace Infrastructure.StockData;
  2. /// <summary>
  3. /// SEIBro getNationFrsecCusInfo(국가별 외화증권 보관현황) 응답 파서 — 순수 C#. 공용 SeibroXml envelope 입력 (외화증권.md §1).
  4. /// 실샘플 래퍼 = &lt;result&gt; 소문자 (SeibroXml 이 대소문자 무시로 흡수). 응답 필드는 SECN_TPCD·FRSEC_CUS_AMT 2종 —
  5. /// STD_DT·NATION_CD 는 요청 파라미터라 응답에 없고 배치가 스탬핑한다. SECN_TPCD 없는 행은 스킵(종목구분이 자연키 일부).
  6. /// </summary>
  7. public static class SeibroNationFrsecCusParser
  8. {
  9. public sealed record Row(
  10. string SecnTpcd,
  11. decimal? FrsecCusAmt
  12. );
  13. public static IReadOnlyList<Row> Parse(SeibroXml.Envelope envelope)
  14. {
  15. var rows = new List<Row>();
  16. foreach (var fields in envelope.Rows)
  17. {
  18. var secnTpcd = SeibroXml.GetOrNull(fields, "SECN_TPCD")?.Trim();
  19. if (string.IsNullOrEmpty(secnTpcd))
  20. {
  21. continue;
  22. }
  23. rows.Add(new Row(
  24. secnTpcd,
  25. SeibroFieldParse.Decimal(SeibroXml.GetOrNull(fields, "FRSEC_CUS_AMT"))
  26. ));
  27. }
  28. return rows;
  29. }
  30. }