85 lines
2.1 KiB
Swift
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
|
|
}
|