Skip to content
This repository was archived by the owner on Dec 8, 2025. It is now read-only.

Commit b71c300

Browse files
committed
Add "request private token" interface
1 parent b8c24da commit b71c300

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

Sources/SwiftTrader/SwiftTrader+KucoinSpot.swift

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,4 +244,32 @@ public extension SwiftTrader {
244244
return .failure(swiftTraderError)
245245
}
246246
}
247+
248+
// MARK: - WebSocket
249+
250+
/// Requests an authorized token for subscribing to private channels and messages via WebSocket.
251+
///
252+
/// https://www.kucoin.com/docs/websocket/basic-info/apply-connect-token/private-channels-authentication-request-required-
253+
///
254+
/// - Returns: An instance of `KucoinWebSocketPrivateTokenResponse` or `SwiftTraderError`.
255+
@discardableResult func kucoinSpotWebSocketRequestPrivateToken() async throws
256+
-> Result<KucoinWebSocketPrivateTokenResponse, SwiftTraderError> {
257+
guard let auth = kucoinAuth else {
258+
return .failure(.kucoinMissingAuthentication)
259+
}
260+
let request = KucoinSpotWebSocketBulletPrivateRequest(
261+
kucoinAuth: auth,
262+
settings: settings.networkRequestSettings
263+
)
264+
switch await request.execute() {
265+
case .success(let model):
266+
guard let privateTokenResponse = model as? KucoinWebSocketPrivateTokenResponse else {
267+
return .failure(.unexpectedResponse(modelString: "\(model)"))
268+
}
269+
return .success(privateTokenResponse)
270+
case .failure(let error):
271+
let swiftTraderError = handle(networkRequestError: error, operation: .kucoinSpotWebSocketPrivateToken)
272+
return .failure(swiftTraderError)
273+
}
274+
}
247275
}

0 commit comments

Comments
 (0)