| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- namespace Infrastructure.StockData;
- /// <summary>
- /// SEIBro getAssetXrcInfo(파생결합증권 기초자산 행사정보) 응답 파서 — 순수 C#. 공용 SeibroXml envelope 입력.
- /// 실샘플 래퍼 = <RESULT> **대문자** (readme §1 확정 — 파생결합 5종 중 하나).
- /// ⚠️ 응답에 ISIN 이 없어(요청 파라미터로만 받음) 배치가 요청 ISIN 을 스탬핑 — 여기선 (AssetSeq, XrcStdSeq, 값) 반환.
- /// 자연키 ASSET_SEQ·XRC_STD_SEQ 없으면 스킵.
- /// </summary>
- public static class SeibroAssetXrcParser
- {
- public sealed record Row(
- int AssetSeq,
- int XrcStdSeq,
- decimal? XrcStdRatio,
- decimal? XrcPrice
- );
- public static IReadOnlyList<Row> Parse(SeibroXml.Envelope envelope)
- {
- var rows = new List<Row>();
- foreach (var fields in envelope.Rows)
- {
- var assetSeq = SeibroFieldParse.Int(SeibroXml.GetOrNull(fields, "ASSET_SEQ"));
- var xrcStdSeq = SeibroFieldParse.Int(SeibroXml.GetOrNull(fields, "XRC_STD_SEQ"));
- if (assetSeq is null || xrcStdSeq is null)
- {
- continue;
- }
- rows.Add(new Row(
- assetSeq.Value,
- xrcStdSeq.Value,
- SeibroFieldParse.Decimal(SeibroXml.GetOrNull(fields, "XRC_STD_RATIO")),
- SeibroFieldParse.Decimal(SeibroXml.GetOrNull(fields, "XRC_PRICE"))
- ));
- }
- return rows;
- }
- }
|