| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- using Domain.Entities.Stocks;
- namespace Infrastructure.StockData;
- /// <summary>
- /// SEIBro getDerivCombiIsinInfo(파생결합증권 종목 정보) 응답 파서 — 순수 C#. 공용 SeibroXml envelope 입력.
- /// 실샘플 래퍼 = <RESULT> **대문자** (readme §1 확정 — 파생결합 5종 중 하나).
- /// ⚠️ 응답에 ISIN 필드가 없다(요청 파라미터로만 받음, 실샘플 확인) — Isin 은 배치가 요청값을 스탬핑하므로 여기선 필드 묶음만 반환.
- /// 종목당 1행이라 첫 행만 의미가 있으나 방어적으로 전 행 반환. Y/N→bool, 날짜→DateOnly, 소수→decimal, BASSET_CNT→int.
- /// </summary>
- public static class SeibroDerivCombiIsinParser
- {
- public static IReadOnlyList<DerivMasterFields> Parse(SeibroXml.Envelope envelope)
- {
- var rows = new List<DerivMasterFields>();
- foreach (var fields in envelope.Rows)
- {
- rows.Add(new DerivMasterFields(
- SeibroXml.GetOrNull(fields, "KOR_SECN_NM")?.Trim(),
- SeibroFieldParse.Int(SeibroXml.GetOrNull(fields, "ISSUCO_CUSTNO")),
- SeibroXml.GetOrNull(fields, "SECN_KANM")?.Trim(),
- SeibroXml.GetOrNull(fields, "ISSU_CUR_CD")?.Trim(),
- SeibroXml.GetOrNull(fields, "RECU_WHCD")?.Trim(),
- SeibroFieldParse.Decimal(SeibroXml.GetOrNull(fields, "FIRST_ISSU_QTY")),
- SeibroFieldParse.Decimal(SeibroXml.GetOrNull(fields, "ISSU_REMQ")),
- SeibroFieldParse.Decimal(SeibroXml.GetOrNull(fields, "PAYIN_AMT_RATIO")),
- SeibroFieldParse.Decimal(SeibroXml.GetOrNull(fields, "PAYIN_AMT")),
- SeibroFieldParse.Date(SeibroXml.GetOrNull(fields, "ISSU_DT")),
- SeibroFieldParse.Date(SeibroXml.GetOrNull(fields, "CONT_DT")),
- SeibroFieldParse.Date(SeibroXml.GetOrNull(fields, "XPIR_DT")),
- SeibroFieldParse.Yn(SeibroXml.GetOrNull(fields, "MIDRED_POSS_YN")),
- SeibroFieldParse.Date(SeibroXml.GetOrNull(fields, "RED_DT")),
- SeibroXml.GetOrNull(fields, "DERISEC_EXER_TPCD")?.Trim(),
- SeibroXml.GetOrNull(fields, "PRCP_PRSV_TPCD")?.Trim(),
- SeibroFieldParse.Decimal(SeibroXml.GetOrNull(fields, "PRCP_PRSV_RATE")),
- SeibroXml.GetOrNull(fields, "COLAT_SETUP_TPCD")?.Trim(),
- SeibroFieldParse.Int(SeibroXml.GetOrNull(fields, "BASSET_CNT")),
- SeibroFieldParse.Yn(SeibroXml.GetOrNull(fields, "MM_PAY_YN"))
- ));
- }
- return rows;
- }
- }
|