use crate::Error;
use crate::ws::client::{OkxWs, WsChannelGroup};
use crate::ws::conn::WsConnector;
use crate::ws::request::{
AmendSpreadOrderRequest, CancelSpreadOrderRequest, MassCancelSpreadOrdersRequest,
PlaceSpreadOrderRequest,
};
impl<C: WsConnector> OkxWs<C> {
pub async fn place_spread_order_ws(
&mut self,
id: impl Into<String>,
request: &PlaceSpreadOrderRequest,
) -> Result<(), Error> {
self.require_channel_group(WsChannelGroup::Business, "sprd-order")?;
self.require_credentials("sprd-order")?;
self.send_validated_request_with_expiry(
id,
"sprd-order",
None,
std::slice::from_ref(request),
)
.await
}
pub async fn amend_spread_order_ws(
&mut self,
id: impl Into<String>,
request: &AmendSpreadOrderRequest,
) -> Result<(), Error> {
self.require_channel_group(WsChannelGroup::Business, "sprd-amend-order")?;
self.require_credentials("sprd-amend-order")?;
self.send_validated_request_with_expiry(
id,
"sprd-amend-order",
None,
std::slice::from_ref(request),
)
.await
}
pub async fn cancel_spread_order_ws(
&mut self,
id: impl Into<String>,
request: &CancelSpreadOrderRequest,
) -> Result<(), Error> {
self.require_channel_group(WsChannelGroup::Business, "sprd-cancel-order")?;
self.require_credentials("sprd-cancel-order")?;
self.send_validated_request_with_expiry(
id,
"sprd-cancel-order",
None,
std::slice::from_ref(request),
)
.await
}
pub async fn mass_cancel_spread_ws(
&mut self,
id: impl Into<String>,
request: &MassCancelSpreadOrdersRequest,
) -> Result<(), Error> {
self.require_channel_group(WsChannelGroup::Business, "sprd-mass-cancel")?;
self.require_credentials("sprd-mass-cancel")?;
self.send_validated_request_with_expiry(
id,
"sprd-mass-cancel",
None,
std::slice::from_ref(request),
)
.await
}
}