babelforce_manager_sdk/resources/
campaigns.rs1use crate::error::{map_manager_err, ManagerError};
2use crate::gen::manager::apis::configuration::Configuration;
3use crate::gen::manager::apis::manager_api as api;
4use crate::gen::manager::apis::outbound_api;
5use crate::gen::manager::models;
6use crate::retry::{with_retry, RetryPolicy};
7use crate::token::SharedCfg;
8
9pub struct CampaignsResource {
11 pub(crate) cfg: SharedCfg<Configuration>,
12 pub(crate) retry: RetryPolicy,
13}
14
15impl CampaignsResource {
16 pub async fn list(&self) -> Result<Vec<models::OutboundCampaign>, ManagerError> {
18 let cfg = self.cfg.get().await?;
19 let cfg = cfg.as_ref();
20 let resp = with_retry(&self.retry, true, || api::list_campaigns(cfg))
21 .await
22 .map_err(map_manager_err)?;
23 Ok(resp.items)
24 }
25
26 pub async fn create(
28 &self,
29 body: models::CreateCampaignRequest,
30 ) -> Result<models::OutboundCampaignItemResponse, ManagerError> {
31 let cfg = self.cfg.get().await?;
32 let cfg = cfg.as_ref();
33 with_retry(&self.retry, false, || {
34 api::create_campaign(cfg, Some(body.clone()))
35 })
36 .await
37 .map_err(map_manager_err)
38 }
39
40 pub async fn get(
42 &self,
43 id: &str,
44 ) -> Result<models::OutboundCampaignItemResponse, ManagerError> {
45 let cfg = self.cfg.get().await?;
46 let cfg = cfg.as_ref();
47 with_retry(&self.retry, true, || api::get_campaign(cfg, id))
48 .await
49 .map_err(map_manager_err)
50 }
51
52 pub async fn update(
54 &self,
55 id: &str,
56 body: models::UpdateCampaignRequest,
57 ) -> Result<models::OutboundCampaignItemResponse, ManagerError> {
58 let cfg = self.cfg.get().await?;
59 let cfg = cfg.as_ref();
60 with_retry(&self.retry, false, || {
61 api::update_campaign(cfg, id, Some(body.clone()))
62 })
63 .await
64 .map_err(map_manager_err)
65 }
66
67 pub async fn delete(&self, id: &str) -> Result<(), ManagerError> {
69 let cfg = self.cfg.get().await?;
70 let cfg = cfg.as_ref();
71 with_retry(&self.retry, false, || api::delete_campaign(cfg, id))
72 .await
73 .map_err(map_manager_err)?;
74 Ok(())
75 }
76
77 pub async fn attempts(
79 &self,
80 id: &str,
81 number: Option<&str>,
82 ) -> Result<models::PaginatedAttemptResponse, ManagerError> {
83 let cfg = self.cfg.get().await?;
84 let cfg = cfg.as_ref();
85 with_retry(&self.retry, true, || {
86 outbound_api::list_campaign_attempts(cfg, id, number)
87 })
88 .await
89 .map_err(map_manager_err)
90 }
91
92 pub async fn hopper(&self, id: &str) -> Result<models::CampaignHopperResponse, ManagerError> {
94 let cfg = self.cfg.get().await?;
95 let cfg = cfg.as_ref();
96 with_retry(&self.retry, true, || {
97 outbound_api::get_campaign_hopper(cfg, id)
98 })
99 .await
100 .map_err(map_manager_err)
101 }
102
103 pub async fn leads(&self, id: &str) -> Result<models::PaginatedLeadResponse, ManagerError> {
105 let cfg = self.cfg.get().await?;
106 let cfg = cfg.as_ref();
107 with_retry(&self.retry, true, || {
108 outbound_api::list_campaign_leads(cfg, id)
109 })
110 .await
111 .map_err(map_manager_err)
112 }
113
114 pub async fn processed_leads(
116 &self,
117 id: &str,
118 ) -> Result<models::PaginatedLeadResponse, ManagerError> {
119 let cfg = self.cfg.get().await?;
120 let cfg = cfg.as_ref();
121 with_retry(&self.retry, true, || {
122 outbound_api::list_campaign_processed_leads(cfg, id)
123 })
124 .await
125 .map_err(map_manager_err)
126 }
127
128 pub async fn get_list(&self, id: &str) -> Result<models::LeadListItemResponse, ManagerError> {
130 let cfg = self.cfg.get().await?;
131 let cfg = cfg.as_ref();
132 with_retry(&self.retry, true, || {
133 outbound_api::get_campaign_list(cfg, id)
134 })
135 .await
136 .map_err(map_manager_err)
137 }
138
139 pub async fn set_list(
141 &self,
142 id: &str,
143 body: models::SetCampaignListRequest,
144 ) -> Result<models::CampaignItemResponse, ManagerError> {
145 let cfg = self.cfg.get().await?;
146 let cfg = cfg.as_ref();
147 with_retry(&self.retry, false, || {
148 outbound_api::set_campaign_list(cfg, id, body.clone())
149 })
150 .await
151 .map_err(map_manager_err)
152 }
153
154 pub async fn unset_list(&self, id: &str) -> Result<models::CampaignItemResponse, ManagerError> {
156 let cfg = self.cfg.get().await?;
157 let cfg = cfg.as_ref();
158 with_retry(&self.retry, false, || {
159 outbound_api::unset_campaign_list(cfg, id)
160 })
161 .await
162 .map_err(map_manager_err)
163 }
164
165 pub async fn set_list_by_id(
167 &self,
168 id: &str,
169 list_id: &str,
170 ) -> Result<models::CampaignItemResponse, ManagerError> {
171 let cfg = self.cfg.get().await?;
172 let cfg = cfg.as_ref();
173 with_retry(&self.retry, false, || {
174 outbound_api::set_campaign_list_by_id(cfg, id, list_id)
175 })
176 .await
177 .map_err(map_manager_err)
178 }
179
180 pub async fn logout_all_agents(
182 &self,
183 id: &str,
184 ) -> Result<models::DefaultV2MessageResponse, ManagerError> {
185 let cfg = self.cfg.get().await?;
186 let cfg = cfg.as_ref();
187 with_retry(&self.retry, false, || {
188 outbound_api::logout_all_campaign_agents(cfg, id)
189 })
190 .await
191 .map_err(map_manager_err)
192 }
193
194 pub async fn statistics(
196 &self,
197 id: &str,
198 from: Option<i32>,
199 to: Option<i32>,
200 ) -> Result<models::CampaignStatisticsResponse, ManagerError> {
201 let cfg = self.cfg.get().await?;
202 let cfg = cfg.as_ref();
203 with_retry(&self.retry, true, || {
204 outbound_api::get_campaign_statistics(cfg, id, from, to)
205 })
206 .await
207 .map_err(map_manager_err)
208 }
209
210 pub async fn status(
212 &self,
213 id: &str,
214 ) -> Result<models::CampaignRealtimeStatusResponse, ManagerError> {
215 let cfg = self.cfg.get().await?;
216 let cfg = cfg.as_ref();
217 with_retry(&self.retry, true, || {
218 outbound_api::get_campaign_status(cfg, id)
219 })
220 .await
221 .map_err(map_manager_err)
222 }
223}