Working on DART api
This commit is contained in:
70
KissMe/Sources/Domestic/DART/DomesticDart.swift
Normal file
70
KissMe/Sources/Domestic/DART/DomesticDart.swift
Normal file
@@ -0,0 +1,70 @@
|
||||
//
|
||||
// DomesticDart.swift
|
||||
// KissMe
|
||||
//
|
||||
// Created by ened-book-m1 on 2023/07/09.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
|
||||
protocol DartRequest: Request {
|
||||
var openApiKey: String { get }
|
||||
}
|
||||
|
||||
extension DartRequest {
|
||||
public var domain: String {
|
||||
"https://opendart.fss.or.kr"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public struct DomesticDart {
|
||||
|
||||
public enum PublicNoticeType: String, Codable {
|
||||
/// 정기공시
|
||||
case regular = "A"
|
||||
/// 주요사항보고
|
||||
case mainPoint = "B"
|
||||
/// 발행공시
|
||||
case issue = "C"
|
||||
/// 지분공시
|
||||
case share = "D"
|
||||
/// 기타공시
|
||||
case etc = "E"
|
||||
/// 외부감사관련
|
||||
case externalAudit = "F"
|
||||
/// 펀드공시
|
||||
case fund = "G"
|
||||
/// 자산유동화
|
||||
case assetSecuritization = "H"
|
||||
/// 거래소공시
|
||||
case exchange = "I"
|
||||
/// 공정위공시
|
||||
case fairTradeCommission = "J"
|
||||
}
|
||||
|
||||
public enum MarketType: String, Codable {
|
||||
/// 유가
|
||||
case stock = "Y"
|
||||
/// 코스닥
|
||||
case kosdaq = "K"
|
||||
/// 코넥스
|
||||
case konex = "N"
|
||||
/// 기타
|
||||
case etc = "E"
|
||||
}
|
||||
|
||||
public enum ReportCode: String, Codable {
|
||||
/// 1분기보고서
|
||||
case firstQuarter = "11013"
|
||||
/// 반기보고서
|
||||
case half = "11012"
|
||||
/// 3분기보고서
|
||||
case thridQuater = "11014"
|
||||
/// 사업보고서
|
||||
case annual = "11011"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
272
KissMe/Sources/Domestic/DART/DomesticDartBusinessReport.swift
Normal file
272
KissMe/Sources/Domestic/DART/DomesticDartBusinessReport.swift
Normal file
@@ -0,0 +1,272 @@
|
||||
//
|
||||
// DomesticDartBusinessReport.swift
|
||||
// KissMe
|
||||
//
|
||||
// Created by ened-book-m1 on 2023/07/09.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
|
||||
extension DomesticDart {
|
||||
|
||||
/// 사업보고서 - 조건부 자본증권 미상환 잔액
|
||||
///
|
||||
public struct ConditionalCapitalSecuritiesOutstandingBalanceRequest: DartRequest {
|
||||
public typealias KResult = ConditionalCapitalSecuritiesOutstandingBalanceResult
|
||||
|
||||
public var url: String {
|
||||
"/api/cndlCaplScritsNrdmpBlce.json"
|
||||
}
|
||||
public var method: Method { .get }
|
||||
|
||||
public var header: [String : String?] {
|
||||
[:]
|
||||
}
|
||||
public var body: [String: Any] {
|
||||
return [
|
||||
"crtfc_key": openApiKey,
|
||||
"corp_code": corporationCode,
|
||||
"bsns_year": businessYear,
|
||||
"reprt_code": reportCode.rawValue,
|
||||
]
|
||||
}
|
||||
public var result: KResult? = nil
|
||||
|
||||
|
||||
public let openApiKey: String
|
||||
let corporationCode: String
|
||||
let businessYear: String
|
||||
let reportCode: ReportCode
|
||||
|
||||
public init(openApiKey: String, corporationCode: String, businessYear: String, reportCode: ReportCode) {
|
||||
self.openApiKey = openApiKey
|
||||
self.corporationCode = corporationCode
|
||||
self.businessYear = businessYear
|
||||
self.reportCode = reportCode
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// 사업보고서 - 미등기임원 보수현황
|
||||
///
|
||||
public struct UnregisteredExecutivePayRequest: DartRequest {
|
||||
public typealias KResult = UnregisteredExecutivePayResult
|
||||
|
||||
public var url: String {
|
||||
"/api/unrstExctvMendngSttus.json"
|
||||
}
|
||||
public var method: Method { .get }
|
||||
|
||||
public var header: [String : String?] {
|
||||
[:]
|
||||
}
|
||||
public var body: [String: Any] {
|
||||
return [
|
||||
"crtfc_key": openApiKey,
|
||||
"corp_code": corporationCode,
|
||||
"bsns_year": businessYear,
|
||||
"reprt_code": reportCode.rawValue,
|
||||
]
|
||||
}
|
||||
public var result: KResult? = nil
|
||||
|
||||
|
||||
public let openApiKey: String
|
||||
let corporationCode: String
|
||||
let businessYear: String
|
||||
let reportCode: ReportCode
|
||||
|
||||
public init(openApiKey: String, corporationCode: String, businessYear: String, reportCode: ReportCode) {
|
||||
self.openApiKey = openApiKey
|
||||
self.corporationCode = corporationCode
|
||||
self.businessYear = businessYear
|
||||
self.reportCode = reportCode
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// 사업보고서 - 회사채 미상환 잔액
|
||||
///
|
||||
public struct CorporateBondOutstandingBalanceRequest: DartRequest {
|
||||
public typealias KResult = CorporateBondOutstandingBalanceResult
|
||||
|
||||
public var url: String {
|
||||
"/api/cprndNrdmpBlce.json"
|
||||
}
|
||||
public var method: Method { .get }
|
||||
|
||||
public var header: [String : String?] {
|
||||
[:]
|
||||
}
|
||||
public var body: [String: Any] {
|
||||
return [
|
||||
"crtfc_key": openApiKey,
|
||||
"corp_code": corporationCode,
|
||||
"bsns_year": businessYear,
|
||||
"reprt_code": reportCode.rawValue,
|
||||
]
|
||||
}
|
||||
public var result: KResult? = nil
|
||||
|
||||
|
||||
public let openApiKey: String
|
||||
let corporationCode: String
|
||||
let businessYear: String
|
||||
let reportCode: ReportCode
|
||||
|
||||
public init(openApiKey: String, corporationCode: String, businessYear: String, reportCode: ReportCode) {
|
||||
self.openApiKey = openApiKey
|
||||
self.corporationCode = corporationCode
|
||||
self.businessYear = businessYear
|
||||
self.reportCode = reportCode
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extension DomesticDart {
|
||||
|
||||
public struct ConditionalCapitalSecuritiesOutstandingBalanceResult: Codable {
|
||||
public let result: Result
|
||||
|
||||
public struct Result: Codable {
|
||||
public let status: String
|
||||
public let message: String
|
||||
public let list: [Item]
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case status
|
||||
case message
|
||||
case list
|
||||
}
|
||||
}
|
||||
|
||||
public struct Item: Codable {
|
||||
/// 접수번호
|
||||
public let receiptNo: String
|
||||
/// 법인구분
|
||||
public let marketType: MarketType
|
||||
/// 고유번호
|
||||
public let corporationCode: String
|
||||
/// 회사명
|
||||
public let corporationName: String
|
||||
/// 잔여만기
|
||||
public let remainingExpiration1: String
|
||||
/// 잔여만기
|
||||
public let remainingExpiration2: String
|
||||
/// 1년 이하
|
||||
public let year1Below: String
|
||||
/// 1년초과 2년이하
|
||||
public let year1Excess_year2Below: String
|
||||
/// 2년초과 3년이하
|
||||
public let year2Excess_year3Blow: String
|
||||
/// 3년초과 4년이하
|
||||
public let year3Excess_year4Below: String
|
||||
/// 4년초과 5년이하
|
||||
public let year4Excess_year5Below: String
|
||||
/// 5년초과 10년이하
|
||||
public let year5Excess_year10Below: String
|
||||
/// 10년초과 20년이하
|
||||
public let year10Excess_year20Below: String
|
||||
/// 20년초과 30년이하
|
||||
public let year20Excess_year30Below: String
|
||||
/// 30년초과
|
||||
public let year30Excess: String
|
||||
/// 합계
|
||||
public let sum: String
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case receiptNo = "rcept_no"
|
||||
case marketType = "corp_cls"
|
||||
case corporationCode = "corp_code"
|
||||
case corporationName = "corp_name"
|
||||
case remainingExpiration1 = "remndr_exprtn1"
|
||||
case remainingExpiration2 = "remndr_exprtn2"
|
||||
case year1Below = "yy1_below"
|
||||
case year1Excess_year2Below = "yy1_excess_yy2_below"
|
||||
case year2Excess_year3Blow = "yy2_excess_yy3_below"
|
||||
case year3Excess_year4Below = "yy3_excess_yy4_below"
|
||||
case year4Excess_year5Below = "yy4_excess_yy5_below"
|
||||
case year5Excess_year10Below = "yy5_excess_yy10_below"
|
||||
case year10Excess_year20Below = "yy10_excess_yy20_below"
|
||||
case year20Excess_year30Below = "yy20_excess_yy30_below"
|
||||
case year30Excess = "yy30_excess"
|
||||
case sum = "sm"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public struct UnregisteredExecutivePayResult: Codable {
|
||||
public let result: Result
|
||||
|
||||
public struct Result: Codable {
|
||||
public let status: String
|
||||
public let message: String
|
||||
public let list: [Item]
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case status
|
||||
case message
|
||||
case list
|
||||
}
|
||||
}
|
||||
|
||||
public struct Item: Codable {
|
||||
/// 접수번호
|
||||
public let receiptNo: String
|
||||
/// 법인구분
|
||||
public let marketType: MarketType
|
||||
/// 고유번호
|
||||
public let corporationCode: String
|
||||
/// 회사명
|
||||
public let corporationName: String
|
||||
/// 구분
|
||||
public let seperation: String
|
||||
/// 인원수
|
||||
public let headcount: String
|
||||
/// 연간급여 총액
|
||||
public let annualTotalSalaryAmount: String
|
||||
/// 1인평균 급여액
|
||||
public let averageSalaryAmount: String
|
||||
/// 비고
|
||||
public let remark: String
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case receiptNo = "rcept_no"
|
||||
case marketType = "corp_cls"
|
||||
case corporationCode = "corp_code"
|
||||
case corporationName = "corp_name"
|
||||
case seperation = "se"
|
||||
case headcount = "nmpr"
|
||||
case annualTotalSalaryAmount = "fyer_salary_totamt"
|
||||
case averageSalaryAmount = "jan_salary_am"
|
||||
case remark = "rm"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public struct CorporateBondOutstandingBalanceResult: Codable {
|
||||
public let result: Result
|
||||
|
||||
public struct Result: Codable {
|
||||
public let status: String
|
||||
public let message: String
|
||||
public let list: [Item]
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case status
|
||||
case message
|
||||
case list
|
||||
}
|
||||
}
|
||||
|
||||
public struct Item: Codable {
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
317
KissMe/Sources/Domestic/DART/DomesticDartNotice.swift
Normal file
317
KissMe/Sources/Domestic/DART/DomesticDartNotice.swift
Normal file
@@ -0,0 +1,317 @@
|
||||
//
|
||||
// DomesticDartNotice.swift
|
||||
// KissMe
|
||||
//
|
||||
// Created by ened-book-m1 on 2023/07/09.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
|
||||
extension DomesticDart {
|
||||
|
||||
/// 공시정보 - 공시검색
|
||||
///
|
||||
public struct NoticeListRequest: DartRequest {
|
||||
public typealias KResult = NoticeListResult
|
||||
|
||||
public var url: String {
|
||||
"/api/list.json"
|
||||
}
|
||||
public var method: Method { .get }
|
||||
|
||||
public var header: [String : String?] {
|
||||
[:]
|
||||
}
|
||||
public var body: [String: Any] {
|
||||
return [
|
||||
"crtfc_key": openApiKey,
|
||||
"corp_code": corporationCode,
|
||||
"bgn_de": startDate.yyyyMMdd,
|
||||
"end_de": endDate.yyyyMMdd,
|
||||
//"last_reprt_at": "N",
|
||||
//"pblntf_ty": noticeType.rawValue,
|
||||
//"pblntf_detail_ty": "",
|
||||
//"corp_cls": marketType.rawValue,
|
||||
//"sort": "date",
|
||||
//"sort_mth": "desc",
|
||||
"page_no": pageNo,
|
||||
"page_count": pageCount,
|
||||
]
|
||||
}
|
||||
public var result: KResult? = nil
|
||||
|
||||
|
||||
public let openApiKey: String
|
||||
let corporationCode: String
|
||||
let startDate: Date
|
||||
let endDate: Date
|
||||
//let noticeType: PublicNoticeType
|
||||
//let marketType: MarketType
|
||||
let pageNo: Int
|
||||
let pageCount: Int
|
||||
|
||||
public init(openApiKey: String, corporationCode: String, startDate: Date, endDate: Date, pageNo: Int, pageCount: Int) {
|
||||
self.openApiKey = openApiKey
|
||||
self.corporationCode = corporationCode
|
||||
self.startDate = startDate
|
||||
self.endDate = endDate
|
||||
self.pageNo = pageNo
|
||||
self.pageCount = pageCount
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// 공시정보 - 기업개황
|
||||
///
|
||||
public struct CompanyRequest: DartRequest {
|
||||
public typealias KResult = CompanyResult
|
||||
|
||||
public var url: String {
|
||||
"/api/company.json"
|
||||
}
|
||||
public var method: Method { .get }
|
||||
|
||||
public var header: [String : String?] {
|
||||
[:]
|
||||
}
|
||||
public var body: [String: Any] {
|
||||
return [
|
||||
"crtfc_key": openApiKey,
|
||||
"corp_code": corporationCode,
|
||||
]
|
||||
}
|
||||
public var result: KResult? = nil
|
||||
|
||||
|
||||
public let openApiKey: String
|
||||
let corporationCode: String
|
||||
|
||||
public init(openApiKey: String, corporationCode: String) {
|
||||
self.openApiKey = openApiKey
|
||||
self.corporationCode = corporationCode
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// 공시정보 - 공시서류원본파일
|
||||
///
|
||||
public struct DocumentRequest: DartRequest {
|
||||
public typealias KResult = Data
|
||||
|
||||
public var url: String {
|
||||
"/api/document.json"
|
||||
}
|
||||
public var method: Method { .get }
|
||||
|
||||
public var header: [String : String?] {
|
||||
[:]
|
||||
}
|
||||
public var body: [String: Any] {
|
||||
return [
|
||||
"crtfc_key": openApiKey,
|
||||
"rcept_no": receiptNo,
|
||||
]
|
||||
}
|
||||
public var result: KResult? = nil
|
||||
|
||||
|
||||
public let openApiKey: String
|
||||
let receiptNo: String
|
||||
|
||||
public init(openApiKey: String, receiptNo: String) {
|
||||
self.openApiKey = openApiKey
|
||||
self.receiptNo = receiptNo
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// 공시정보 - 고유번호
|
||||
///
|
||||
public struct CorporationCodesRequest: DartRequest {
|
||||
public typealias KResult = CorporationCodesResult
|
||||
|
||||
public var url: String {
|
||||
"/api/document.json"
|
||||
}
|
||||
public var method: Method { .get }
|
||||
|
||||
public var header: [String : String?] {
|
||||
[:]
|
||||
}
|
||||
public var body: [String: Any] {
|
||||
return [
|
||||
"crtfc_key": openApiKey,
|
||||
]
|
||||
}
|
||||
public var result: KResult? = nil
|
||||
|
||||
|
||||
public let openApiKey: String
|
||||
|
||||
public init(openApiKey: String) {
|
||||
self.openApiKey = openApiKey
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extension DomesticDart {
|
||||
|
||||
public struct NoticeListResult: Codable {
|
||||
public let result: Result
|
||||
|
||||
public struct Result: Codable {
|
||||
public let status: String
|
||||
public let message: String
|
||||
public let pageNo: Int
|
||||
public let pageCount: Int
|
||||
public let totalCount: Int
|
||||
public let totalPage: Int
|
||||
public let list: [Item]
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case status
|
||||
case message
|
||||
case pageNo = "page_no"
|
||||
case pageCount = "page_count"
|
||||
case totalCount = "total_count"
|
||||
case totalPage = "total_page"
|
||||
case list
|
||||
}
|
||||
}
|
||||
|
||||
public struct Item: Codable {
|
||||
/// 법인구분
|
||||
public let marketType: MarketType
|
||||
/// 종목명(법인명)
|
||||
public let corporationName: String
|
||||
/// 고유번호
|
||||
public let corporationCode: String
|
||||
/// 종목코드
|
||||
public let productNo: String
|
||||
/// 보고서명
|
||||
public let reportName: String
|
||||
/// 접수번호
|
||||
public let receiptNo: String
|
||||
/// 공시 제출인명
|
||||
public let submissionName: String
|
||||
/// 접수일자
|
||||
public let receiptDate: String
|
||||
/// 비고
|
||||
public let remark: String
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case marketType = "corp_cls"
|
||||
case corporationName = "corp_name"
|
||||
case corporationCode = "corp_code"
|
||||
case productNo = "stock_code"
|
||||
case reportName = "report_nm"
|
||||
case receiptNo = "rcept_no"
|
||||
case submissionName = "flr_nm"
|
||||
case receiptDate = "rcept_dt"
|
||||
case remark = "rm"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public struct CompanyResult: Codable {
|
||||
public let result: Result
|
||||
|
||||
public struct Result: Codable {
|
||||
public let status: String
|
||||
public let message: String
|
||||
|
||||
/// 정식명칭
|
||||
public let corporationName: String
|
||||
/// 영문명칭
|
||||
public let englishCorporationName: String
|
||||
/// 종목명(상장사) 또는 약식명칭(기타법인)
|
||||
public let stockName: String
|
||||
/// 상장회사인 경우 주식의 종목코드
|
||||
public let productCode: String
|
||||
/// 대표자명
|
||||
public let ceoName: String
|
||||
/// 법인구분
|
||||
public let marketType: MarketType
|
||||
/// 법인등록번호
|
||||
public let corporationNo: String
|
||||
/// 사업자등록번호
|
||||
public let businessNo: String
|
||||
/// 주소
|
||||
public let address: String
|
||||
/// 홈페이지
|
||||
public let homepage: String
|
||||
/// IR 홈페이지
|
||||
public let ir: String
|
||||
/// 전화번호
|
||||
public let phoneNumber: String
|
||||
/// 팩스번호
|
||||
public let faxNumber: String
|
||||
/// 업종코드
|
||||
public let industryCode: String
|
||||
/// 설립일(YYYYMMDD)
|
||||
public let establishedDate: String
|
||||
/// 결산월(MM)
|
||||
public let accountMonth: String
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case status
|
||||
case message
|
||||
|
||||
case corporationName = "corp_name"
|
||||
case englishCorporationName = "corp_name_eng"
|
||||
case stockName = "stock_name"
|
||||
case productCode = "stock_code"
|
||||
case ceoName = "ceo_nm"
|
||||
case marketType = "corp_cls"
|
||||
case corporationNo = "jurir_no"
|
||||
case businessNo = "bizr_no"
|
||||
case address = "adres"
|
||||
case homepage = "hm_url"
|
||||
case ir = "ir_url"
|
||||
case phoneNumber = "phn_no"
|
||||
case faxNumber = "fax_no"
|
||||
case industryCode = "induty_code"
|
||||
case establishedDate = "est_dt"
|
||||
case accountMonth = "acc_mt"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public struct CorporationCodesResult: Codable {
|
||||
public let result: Result
|
||||
|
||||
public struct Result: Codable {
|
||||
public let status: String
|
||||
public let message: String
|
||||
public let list: [Item]
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case status
|
||||
case message
|
||||
case list
|
||||
}
|
||||
}
|
||||
|
||||
public struct Item: Codable {
|
||||
/// 고유번호
|
||||
public let corporationCode: String
|
||||
/// 정식명칭
|
||||
public let corporationName: String
|
||||
/// 종목코드
|
||||
public let productCode: String
|
||||
/// 최종변경일자
|
||||
public let modifyDate: String
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case corporationCode = "corp_code"
|
||||
case corporationName = "corp_name"
|
||||
case productCode = "stock_code"
|
||||
case modifyDate = "modify_date"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
24
KissMe/Sources/Domestic/KRX300/DomesticExtra.swift
Normal file
24
KissMe/Sources/Domestic/KRX300/DomesticExtra.swift
Normal file
@@ -0,0 +1,24 @@
|
||||
//
|
||||
// DomesticExtra.swift
|
||||
// KissMe
|
||||
//
|
||||
// Created by ened-book-m1 on 2023/07/09.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
|
||||
public struct DomesticExtra {
|
||||
public typealias Shorts = ShortSellingBalanceResult.OutBlock
|
||||
public typealias IndexProduct = AllIndicesResult.Block
|
||||
}
|
||||
|
||||
protocol KrxRequest: Request {
|
||||
}
|
||||
|
||||
|
||||
extension KrxRequest {
|
||||
public var domain: String {
|
||||
"http://data.krx.co.kr"
|
||||
}
|
||||
}
|
||||
@@ -44,9 +44,6 @@ extension DomesticExtra {
|
||||
public struct IndexPriceRequest: KrxRequest {
|
||||
public typealias KResult = IndexPriceResult
|
||||
|
||||
public var domain: String {
|
||||
"http://data.krx.co.kr"
|
||||
}
|
||||
public var url: String {
|
||||
"/comm/bldAttendant/getJsonData.cmd"
|
||||
}
|
||||
@@ -86,9 +83,6 @@ extension DomesticExtra {
|
||||
public struct IndexPortfolioRequest: KrxRequest {
|
||||
public typealias KResult = IndexPortfolioResult
|
||||
|
||||
public var domain: String {
|
||||
"http://data.krx.co.kr"
|
||||
}
|
||||
public var url: String {
|
||||
"/comm/bldAttendant/getJsonData.cmd"
|
||||
}
|
||||
@@ -129,9 +123,6 @@ extension DomesticExtra {
|
||||
public struct AllIndicesRequest: KrxRequest {
|
||||
public typealias KResult = AllIndicesResult
|
||||
|
||||
public var domain: String {
|
||||
"http://data.krx.co.kr"
|
||||
}
|
||||
public var url: String {
|
||||
"/comm/bldAttendant/getJsonData.cmd"
|
||||
}
|
||||
|
||||
@@ -8,15 +8,6 @@
|
||||
import Foundation
|
||||
|
||||
|
||||
public struct DomesticExtra {
|
||||
public typealias Shorts = ShortSellingBalanceResult.OutBlock
|
||||
public typealias IndexProduct = AllIndicesResult.Block
|
||||
}
|
||||
|
||||
protocol KrxRequest: Request {
|
||||
}
|
||||
|
||||
|
||||
extension DomesticExtra {
|
||||
|
||||
/// 한국거래소 - 공매도 통계 - 잔고현황
|
||||
@@ -24,9 +15,6 @@ extension DomesticExtra {
|
||||
public struct ShortSellingBalanceRequest: KrxRequest {
|
||||
public typealias KResult = ShortSellingBalanceResult
|
||||
|
||||
public var domain: String {
|
||||
"http://data.krx.co.kr"
|
||||
}
|
||||
public var url: String {
|
||||
"/comm/bldAttendant/getJsonData.cmd"
|
||||
}
|
||||
2
bin/data
2
bin/data
Submodule bin/data updated: ae22bb858d...b0a2e701b7
@@ -39,6 +39,10 @@
|
||||
341F5F142A16CD7A00962D48 /* DomesticShopProduct.swift in Sources */ = {isa = PBXBuildFile; fileRef = 341F5F132A16CD7A00962D48 /* DomesticShopProduct.swift */; };
|
||||
3435A7F72A35D82000D604F1 /* DomesticShortSelling.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3435A7F62A35D82000D604F1 /* DomesticShortSelling.swift */; };
|
||||
349C26AB2A1EAE2400F3EC91 /* KissProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 349C26AA2A1EAE2400F3EC91 /* KissProfile.swift */; };
|
||||
34C1BA4D2A59CD3400423D64 /* DomesticDartNotice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34C1BA4C2A59CD3400423D64 /* DomesticDartNotice.swift */; };
|
||||
34C1BA4F2A5A603F00423D64 /* DomesticExtra.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34C1BA4E2A5A603F00423D64 /* DomesticExtra.swift */; };
|
||||
34C1BA512A5A607D00423D64 /* DomesticDart.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34C1BA502A5A607D00423D64 /* DomesticDart.swift */; };
|
||||
34C1BA532A5A683D00423D64 /* DomesticDartBusinessReport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34C1BA522A5A683D00423D64 /* DomesticDartBusinessReport.swift */; };
|
||||
34D3680F2A2AA0BE005E6756 /* PropertyIterable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34D3680E2A2AA0BE005E6756 /* PropertyIterable.swift */; };
|
||||
34E7B9112A49BD2800B3AB9F /* DomesticIndex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34E7B9102A49BD2800B3AB9F /* DomesticIndex.swift */; };
|
||||
34F1900C2A41982A0068C697 /* KissIndexResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34F1900B2A41982A0068C697 /* KissIndexResult.swift */; };
|
||||
@@ -90,6 +94,10 @@
|
||||
341F5F132A16CD7A00962D48 /* DomesticShopProduct.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomesticShopProduct.swift; sourceTree = "<group>"; };
|
||||
3435A7F62A35D82000D604F1 /* DomesticShortSelling.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomesticShortSelling.swift; sourceTree = "<group>"; };
|
||||
349C26AA2A1EAE2400F3EC91 /* KissProfile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KissProfile.swift; sourceTree = "<group>"; };
|
||||
34C1BA4C2A59CD3400423D64 /* DomesticDartNotice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomesticDartNotice.swift; sourceTree = "<group>"; };
|
||||
34C1BA4E2A5A603F00423D64 /* DomesticExtra.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomesticExtra.swift; sourceTree = "<group>"; };
|
||||
34C1BA502A5A607D00423D64 /* DomesticDart.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomesticDart.swift; sourceTree = "<group>"; };
|
||||
34C1BA522A5A683D00423D64 /* DomesticDartBusinessReport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomesticDartBusinessReport.swift; sourceTree = "<group>"; };
|
||||
34D3680E2A2AA0BE005E6756 /* PropertyIterable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PropertyIterable.swift; sourceTree = "<group>"; };
|
||||
34E7B9102A49BD2800B3AB9F /* DomesticIndex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomesticIndex.swift; sourceTree = "<group>"; };
|
||||
34F1900B2A41982A0068C697 /* KissIndexResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KissIndexResult.swift; sourceTree = "<group>"; };
|
||||
@@ -174,8 +182,8 @@
|
||||
341F5EE62A0F3EFB00962D48 /* Domestic */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
34C1BA4B2A595A5F00423D64 /* DART */,
|
||||
34E7B90F2A4994AF00B3AB9F /* KRX300 */,
|
||||
3435A7F52A35D68000D604F1 /* ShortSelling */,
|
||||
341F5F122A16CD3C00962D48 /* Shop */,
|
||||
341F5EE42A0F3EF400962D48 /* DomesticStock.swift */,
|
||||
341F5EF62A0F8B0500962D48 /* DomesticStockResult.swift */,
|
||||
@@ -223,18 +231,22 @@
|
||||
path = Shop;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3435A7F52A35D68000D604F1 /* ShortSelling */ = {
|
||||
34C1BA4B2A595A5F00423D64 /* DART */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3435A7F62A35D82000D604F1 /* DomesticShortSelling.swift */,
|
||||
34C1BA502A5A607D00423D64 /* DomesticDart.swift */,
|
||||
34C1BA4C2A59CD3400423D64 /* DomesticDartNotice.swift */,
|
||||
34C1BA522A5A683D00423D64 /* DomesticDartBusinessReport.swift */,
|
||||
);
|
||||
path = ShortSelling;
|
||||
path = DART;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
34E7B90F2A4994AF00B3AB9F /* KRX300 */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
34C1BA4E2A5A603F00423D64 /* DomesticExtra.swift */,
|
||||
34E7B9102A49BD2800B3AB9F /* DomesticIndex.swift */,
|
||||
3435A7F62A35D82000D604F1 /* DomesticShortSelling.swift */,
|
||||
);
|
||||
path = KRX300;
|
||||
sourceTree = "<group>";
|
||||
@@ -369,7 +381,10 @@
|
||||
files = (
|
||||
341F5EFB2A10909D00962D48 /* LoginResult.swift in Sources */,
|
||||
340A4DC42A4E4345005A1FBA /* ArrayDecodable.swift in Sources */,
|
||||
34C1BA532A5A683D00423D64 /* DomesticDartBusinessReport.swift in Sources */,
|
||||
34C1BA4F2A5A603F00423D64 /* DomesticExtra.swift in Sources */,
|
||||
340A4DC82A4E43C5005A1FBA /* GeneralError.swift in Sources */,
|
||||
34C1BA512A5A607D00423D64 /* DomesticDart.swift in Sources */,
|
||||
340A4DCE2A4EA5D8005A1FBA /* Runner.swift in Sources */,
|
||||
341F5F0B2A15115400962D48 /* KissShop.swift in Sources */,
|
||||
3435A7F72A35D82000D604F1 /* DomesticShortSelling.swift in Sources */,
|
||||
@@ -393,6 +408,7 @@
|
||||
341F5F012A11155100962D48 /* DomesticStockSearchResult.swift in Sources */,
|
||||
341F5F142A16CD7A00962D48 /* DomesticShopProduct.swift in Sources */,
|
||||
341F5EF22A0F887200962D48 /* DomesticFutures.swift in Sources */,
|
||||
34C1BA4D2A59CD3400423D64 /* DomesticDartNotice.swift in Sources */,
|
||||
34D3680F2A2AA0BE005E6756 /* PropertyIterable.swift in Sources */,
|
||||
341F5F112A1685E700962D48 /* ShopRequest.swift in Sources */,
|
||||
341F5EF92A0F907300962D48 /* DomesticStockPriceResult.swift in Sources */,
|
||||
|
||||
Reference in New Issue
Block a user