Files
KissMe/KissMeConsole/Sources/main.swift
2023-08-22 18:12:47 +09:00

85 lines
2.1 KiB
Swift

//
// main.swift
// KissMeConsole
//
// Created by ened-book-m1 on 2023/05/09.
//
import Foundation
//KissConsole().run()
import KissMe
test_get_websocket_key_and_request_simple()
func test_get_websocket_key_and_request_simple() {
let isMock = false
let semaphore = DispatchSemaphore(value: 0)
Task {
guard let (account, approvalKey) = await test_get_websocket_key(isMock: isMock) else {
return
}
let webSocketCredential = KissWebSocketCredential(isMock: isMock, accountNo: account.accountNo, approvalKey: approvalKey)
var socket = Domestic.ContractPriceWebSocket(credential: webSocketCredential, productCode: KissConsole.defaultProductNo)
do {
try await socket.connect()
let result = try await socket.subscribe()
print(result)
try await Task.sleep(nanoseconds: 1_000_000_000 * 3)
let result2 = try await socket.unsubscribe()
print(result2)
if let message = try await socket.receive() {
print(message)
}
try await Task.sleep(nanoseconds: 1_000_000_000 * 3)
socket.disconnect()
try await Task.sleep(nanoseconds: 1_000_000_000 * 1)
} catch {
print(error)
}
semaphore.signal()
}
semaphore.wait()
}
func test_get_websocket_key(isMock: Bool) async -> (KissAccount, String)? {
let credential: Credential
do {
credential = try KissCredential(isMock: isMock)
} catch {
print(error)
return nil
}
let account = KissAccount(credential: credential)
do {
/// Return existing valid key
if let approvalKey = account.approvalKey {
return (account, approvalKey)
}
if try await account.login() {
let approvalKey = try await account.getApprovalKey()
print("approvalKey : \(approvalKey)")
return (account, approvalKey)
}
} catch {
print(error)
return nil
}
return nil
}