Skip to content

Commit ec459ee

Browse files
author
Fernando Fernandes
committed
Handle/return order parameter creation error
1 parent aa9d8c2 commit ec459ee

File tree

2 files changed

+35
-25
lines changed

2 files changed

+35
-25
lines changed

Sources/SwiftTrader/Model/Error/SwiftTraderError.swift

+3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ public enum SwiftTraderError: Error {
1212

1313
// MARK: - Generic
1414

15+
/// An unexpected error happened.
16+
case unexpected(_ error: Error)
17+
1518
/// The returned model is unexpected.
1619
case unexpectedResponse(modelString: String)
1720

Sources/SwiftTrader/SwiftTrader.swift

+32-25
Original file line numberDiff line numberDiff line change
@@ -92,35 +92,42 @@ public extension SwiftTrader {
9292
///
9393
/// https://docs.kucoin.com/futures/#place-an-order
9494
///
95-
/// - Parameter orderInput: `SwiftTraderOrderInput` instance that encapsulates
95+
/// - Parameter orderInput: `SwiftTraderStopLimitOrderInput` instance that encapsulates
9696
/// all the arguments required for submiting the stop limit order.
9797
/// - Returns: An instance of `KucoinFuturesPlaceOrder` or `SwiftTraderError`.
98-
func kucoinFuturesPlaceStopLimitOrder(_ stopLimitOrderInput: SwiftTraderStopLimitOrderInput) async throws -> Result<KucoinFuturesPlaceOrder, SwiftTraderError> {
99-
100-
let orderParameters = try createStopLimitOrderParameters(for: stopLimitOrderInput)
101-
102-
if stopLimitOrderInput.clean {
103-
do {
104-
try await kucoinFuturesCancelStopOrders(symbol: stopLimitOrderInput.contractSymbol)
105-
} catch {
106-
logger.log("Could not cancel untriggered stop orders: \(error)")
98+
func kucoinFuturesPlaceStopLimitOrder(_ orderInput: SwiftTraderStopLimitOrderInput) async throws -> Result<KucoinFuturesPlaceOrder, SwiftTraderError> {
99+
do {
100+
let orderParameters = try createStopLimitOrderParameters(for: orderInput)
101+
102+
if orderInput.clean {
103+
do {
104+
try await kucoinFuturesCancelStopOrders(symbol: orderInput.contractSymbol)
105+
} catch {
106+
logger.log("Could not cancel untriggered stop orders: \(error)")
107+
}
107108
}
108-
}
109-
110-
let request = KucoinFuturesPlaceOrdersRequest(
111-
orderParameters: orderParameters,
112-
kucoinAuth: kucoinAuth,
113-
settings: settings.networkRequestSettings
114-
)
115-
switch await request.execute() {
116-
case .success(let model):
117-
guard let placeOrder = model as? KucoinFuturesPlaceOrder else {
118-
return .failure(.unexpectedResponse(modelString: "\(model)"))
109+
110+
let request = KucoinFuturesPlaceOrdersRequest(
111+
orderParameters: orderParameters,
112+
kucoinAuth: kucoinAuth,
113+
settings: settings.networkRequestSettings
114+
)
115+
switch await request.execute() {
116+
case .success(let model):
117+
guard let placeOrder = model as? KucoinFuturesPlaceOrder else {
118+
return .failure(.unexpectedResponse(modelString: "\(model)"))
119+
}
120+
return .success(placeOrder)
121+
case .failure(let error):
122+
let swiftTraderError = handle(networkRequestError: error, operation: .kucoinFuturesPlaceStopLimitOrder)
123+
return .failure(swiftTraderError)
124+
}
125+
} catch {
126+
if let swiftTraderError = error as? SwiftTraderError {
127+
return .failure(swiftTraderError)
128+
} else {
129+
return .failure(.unexpected(error))
119130
}
120-
return .success(placeOrder)
121-
case .failure(let error):
122-
let swiftTraderError = handle(networkRequestError: error, operation: .kucoinFuturesPlaceStopLimitOrder)
123-
return .failure(swiftTraderError)
124131
}
125132
}
126133

0 commit comments

Comments
 (0)