dhan_rs/api/
conditional.rs1use crate::client::{DhanClient, required_path_segment};
4use crate::error::{DhanError, Result};
5use crate::types::conditional::*;
6
7impl DhanClient {
8 pub async fn place_multi_order(&self, req: &MultiOrderRequest) -> Result<MultiOrderResponse> {
12 req.validate()
13 .map_err(|message| DhanError::InvalidArgument(message.into()))?;
14 self.post("/v2/alerts/multi/orders", req).await
15 }
16
17 pub async fn place_conditional_trigger(
21 &self,
22 req: &ConditionalTriggerRequest,
23 ) -> Result<ConditionalTriggerResponse> {
24 self.post("/v2/alerts/orders", req).await
25 }
26
27 pub async fn modify_conditional_trigger(
31 &self,
32 alert_id: &str,
33 req: &ConditionalTriggerRequest,
34 ) -> Result<ConditionalTriggerResponse> {
35 let alert_id = required_path_segment("alert_id", alert_id)?;
36 self.put(&format!("/v2/alerts/orders/{alert_id}"), req)
37 .await
38 }
39
40 pub async fn delete_conditional_trigger(
44 &self,
45 alert_id: &str,
46 ) -> Result<ConditionalTriggerResponse> {
47 let alert_id = required_path_segment("alert_id", alert_id)?;
48 self.delete(&format!("/v2/alerts/orders/{alert_id}")).await
49 }
50
51 pub async fn get_conditional_trigger(
55 &self,
56 alert_id: &str,
57 ) -> Result<ConditionalTriggerDetail> {
58 let alert_id = required_path_segment("alert_id", alert_id)?;
59 self.get(&format!("/v2/alerts/orders/{alert_id}")).await
60 }
61
62 pub async fn get_all_conditional_triggers(&self) -> Result<Vec<ConditionalTriggerDetail>> {
66 self.get("/v2/alerts/orders").await
67 }
68}