From c69b00b1719a1e9b9b68f5e23c620e628660f081 Mon Sep 17 00:00:00 2001 From: ened Date: Sun, 28 May 2023 16:08:49 +0900 Subject: [PATCH] Implement candle command --- KissMe.xcodeproj/project.pbxproj | 8 +++---- KissMe/Domestic/DomesticStockPrice.swift | 9 ++++--- .../Domestic/DomesticStockPriceResult.swift | 2 +- .../KissMeConsole.xcodeproj/project.pbxproj | 4 ++-- .../KissMeConsole/ConsoleExtensions.swift | 12 ++++++++++ KissMeConsole/KissMeConsole/KissConsole.swift | 24 +++++++++++++++++-- KissMeConsole/KissMeConsole/test.swift | 2 ++ 7 files changed, 49 insertions(+), 12 deletions(-) diff --git a/KissMe.xcodeproj/project.pbxproj b/KissMe.xcodeproj/project.pbxproj index b8e48be..9f3618e 100644 --- a/KissMe.xcodeproj/project.pbxproj +++ b/KissMe.xcodeproj/project.pbxproj @@ -478,7 +478,7 @@ GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = ""; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 16.4; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = ( "@executable_path/Frameworks", "@loader_path/Frameworks", @@ -487,7 +487,7 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 13.3; + MACOSX_DEPLOYMENT_TARGET = 13.0; MARKETING_VERSION = 1.0; MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20"; @@ -516,7 +516,7 @@ GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = ""; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 16.4; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = ( "@executable_path/Frameworks", "@loader_path/Frameworks", @@ -525,7 +525,7 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 13.3; + MACOSX_DEPLOYMENT_TARGET = 13.0; MARKETING_VERSION = 1.0; MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20"; diff --git a/KissMe/Domestic/DomesticStockPrice.swift b/KissMe/Domestic/DomesticStockPrice.swift index b8dc7b0..4319b0d 100644 --- a/KissMe/Domestic/DomesticStockPrice.swift +++ b/KissMe/Domestic/DomesticStockPrice.swift @@ -69,6 +69,7 @@ extension Domestic { "appkey": credential.appKey, "appsecret": credential.appSecret, "tr_id": trId, + "tr_cont": isNext ? "N": " ", "custtype": CustomerType.personal.rawValue, ] } @@ -78,7 +79,7 @@ extension Domestic { "FID_COND_MRKT_DIV_CODE": "J", "FID_INPUT_ISCD": productNo, "FID_INPUT_HOUR_1": startTodayTime, - "FID_PW_DATA_INCU_YN": "N", + "FID_PW_DATA_INCU_YN": "Y", ] } public var result: KResult? = nil @@ -92,12 +93,14 @@ extension Domestic { public let accessToken: String let productNo: String let startTodayTime: String // HHMMSS + let isNext: Bool - public init(credential: Credential, accessToken: String, productNo: String, startTodayTime: String) { + public init(credential: Credential, accessToken: String, productNo: String, startTodayTime: String, isNext: Bool) { self.credential = credential self.accessToken = accessToken self.productNo = productNo self.startTodayTime = startTodayTime + self.isNext = isNext } } } @@ -139,7 +142,7 @@ extension KissAccount { return } - let request = Domestic.StockTodayMinutePriceRequest(credential: credential, accessToken: accessToken, productNo: productNo, startTodayTime: startTodayTime.HHmmss) + let request = Domestic.StockTodayMinutePriceRequest(credential: credential, accessToken: accessToken, productNo: productNo, startTodayTime: startTodayTime.HHmmss, isNext: false) request.query { result in switch result { case .success(let result): diff --git a/KissMe/Domestic/DomesticStockPriceResult.swift b/KissMe/Domestic/DomesticStockPriceResult.swift index fdcaf0f..2084676 100644 --- a/KissMe/Domestic/DomesticStockPriceResult.swift +++ b/KissMe/Domestic/DomesticStockPriceResult.swift @@ -416,7 +416,7 @@ public struct MinutePriceResult: Codable { public let resultCode: String public let messageCode: String public let message: String - public let output1: [OutputSummary]? + public let output1: OutputSummary? public let output2: [OutputPrice]? private enum CodingKeys: String, CodingKey { diff --git a/KissMeConsole/KissMeConsole.xcodeproj/project.pbxproj b/KissMeConsole/KissMeConsole.xcodeproj/project.pbxproj index 3ad3d1f..d9258c3 100644 --- a/KissMeConsole/KissMeConsole.xcodeproj/project.pbxproj +++ b/KissMeConsole/KissMeConsole.xcodeproj/project.pbxproj @@ -214,7 +214,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 13.3; + MACOSX_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -268,7 +268,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 13.3; + MACOSX_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = macosx; diff --git a/KissMeConsole/KissMeConsole/ConsoleExtensions.swift b/KissMeConsole/KissMeConsole/ConsoleExtensions.swift index a31aead..0f308c2 100644 --- a/KissMeConsole/KissMeConsole/ConsoleExtensions.swift +++ b/KissMeConsole/KissMeConsole/ConsoleExtensions.swift @@ -39,3 +39,15 @@ extension String { return self } } + +extension Date { + public func changing(hour: Int, min: Int, sec: Int, timeZone: String = "KST") -> Date? { + let sets: Set = [.year, .month, .day, .hour, .minute, .second] + var components = Calendar.current.dateComponents(sets, from: self) + components.timeZone = TimeZone(abbreviation: timeZone) + components.hour = hour + components.minute = min + components.second = sec + return Calendar.current.date(from: components) + } +} diff --git a/KissMeConsole/KissMeConsole/KissConsole.swift b/KissMeConsole/KissMeConsole/KissConsole.swift index 0b911c2..98afdc7 100644 --- a/KissMeConsole/KissMeConsole/KissConsole.swift +++ b/KissMeConsole/KissMeConsole/KissConsole.swift @@ -360,7 +360,7 @@ extension KissConsole { // TODO: work do { - let success = try await account?.cancelOrder() + let _ = try await account?.cancelOrder() } catch { print("\(error)") } @@ -396,6 +396,7 @@ extension KissConsole { do { let result = try await account!.getCurrentPrice(productNo: productNo) if let output = result.output { + currentShortCode = output.shortProductCode let productName = getProduct(shortCode: output.shortProductCode)?.itemName ?? "" print("\t종목명: ", productName) print("\t업종명: ", output.koreanMarketName, output.koreanBusinessTypeName) @@ -425,7 +426,26 @@ extension KissConsole { private func onCandle(_ args: [String]) async { - + let productNo: String? = (args.isEmpty ? currentShortCode: args[0]) + guard let productNo = productNo else { + print("Invalid productNo") + return + } + + do { + let lastWeek = Date().addingTimeInterval(-60 * 60 * 24 * 7) + guard let startTime = lastWeek.changing(hour: 9, min: 0, sec: 0) else { + print("Invalid start time") + return + } + let result = try await account!.getMinutePrice(productNo: productNo, startTodayTime: startTime) + + // TODO: work on result + + print(result) + } catch { + print("\(error)") + } } diff --git a/KissMeConsole/KissMeConsole/test.swift b/KissMeConsole/KissMeConsole/test.swift index a999256..f0f6bf0 100644 --- a/KissMeConsole/KissMeConsole/test.swift +++ b/KissMeConsole/KissMeConsole/test.swift @@ -68,6 +68,7 @@ func test_json_result() { func test_xml_result() { + /* let str = "
00NORMAL SERVICE.
이스트아시아홀딩스인베스트먼트리미티드900110삼천당제약000250중앙에너비스000440신라섬유001000안국약품001540무림에스피001810이화공영001840피에스텍002230삼일기업공사002290한일사료0058601011637
" let data = Data(str.utf8) @@ -97,4 +98,5 @@ func test_xml_result() { print(helper.result) } } + */ }