use crate::client::{DhanClient, required_path_segment};
use crate::error::Result;
use crate::types::orders::*;
impl DhanClient {
pub async fn place_order(&self, req: &PlaceOrderRequest) -> Result<OrderResponse> {
self.post("/v2/orders", req).await
}
pub async fn modify_order(
&self,
order_id: &str,
req: &ModifyOrderRequest,
) -> Result<OrderResponse> {
let order_id = required_path_segment("order_id", order_id)?;
self.put(&format!("/v2/orders/{order_id}"), req).await
}
pub async fn cancel_order(&self, order_id: &str) -> Result<OrderResponse> {
let order_id = required_path_segment("order_id", order_id)?;
self.delete(&format!("/v2/orders/{order_id}")).await
}
pub async fn slice_order(&self, req: &PlaceOrderRequest) -> Result<Vec<OrderResponse>> {
self.post("/v2/orders/slicing", req).await
}
pub async fn get_orders(&self) -> Result<Vec<OrderDetail>> {
self.get("/v2/orders").await
}
pub async fn get_order(&self, order_id: &str) -> Result<OrderDetail> {
let order_id = required_path_segment("order_id", order_id)?;
self.get(&format!("/v2/orders/{order_id}")).await
}
pub async fn get_order_by_correlation_id(&self, correlation_id: &str) -> Result<OrderDetail> {
let correlation_id = required_path_segment("correlation_id", correlation_id)?;
self.get(&format!("/v2/orders/external/{correlation_id}"))
.await
}
pub async fn get_trades(&self) -> Result<Vec<TradeDetail>> {
self.get("/v2/trades").await
}
pub async fn get_trades_for_order(&self, order_id: &str) -> Result<Vec<TradeDetail>> {
let order_id = required_path_segment("order_id", order_id)?;
self.get(&format!("/v2/trades/{order_id}")).await
}
}