babelforce_manager_sdk/resources/
babeldesk.rs1use crate::error::{map_manager_err, ManagerError};
2use crate::gen::manager::apis::configuration::Configuration;
3use crate::gen::manager::apis::manager_api;
4use crate::gen::manager::apis::{babeldesk_api as api, babeldesk_widget_api as widget_api};
5use crate::gen::manager::models;
6use crate::http::collect_all;
7use crate::retry::{with_retry, RetryPolicy};
8use crate::token::SharedCfg;
9
10pub struct BabeldeskResource {
12 pub(crate) cfg: SharedCfg<Configuration>,
13 pub(crate) retry: RetryPolicy,
14 pub widgets: BabeldeskWidgetsResource,
16}
17
18impl BabeldeskResource {
19 pub async fn list_all(&self) -> Result<Vec<models::Babeldesk>, ManagerError> {
21 let cfg = self.cfg.get().await?;
22 let cfg = cfg.as_ref();
23 collect_all(&self.retry, map_manager_err, |page| async move {
24 let r = api::list_babeldesks(cfg, Some(page), None).await?;
25 Ok((
26 r.items,
27 r.pagination.pages.unwrap_or(1),
28 r.pagination.current.unwrap_or(1),
29 ))
30 })
31 .await
32 }
33
34 pub async fn widget_settings(
36 &self,
37 r#type: &str,
38 ) -> Result<models::WidgetSettingsResponse, ManagerError> {
39 let cfg = self.cfg.get().await?;
40 let cfg = cfg.as_ref();
41 with_retry(&self.retry, true, || {
42 manager_api::get_widget_settings(cfg, r#type)
43 })
44 .await
45 .map_err(map_manager_err)
46 }
47
48 pub async fn create(
50 &self,
51 body: models::RestCreateBabeldesk,
52 ) -> Result<models::BabeldeskItemResponse, ManagerError> {
53 let cfg = self.cfg.get().await?;
54 let cfg = cfg.as_ref();
55 with_retry(&self.retry, false, || {
56 api::create_babeldesk(cfg, body.clone())
57 })
58 .await
59 .map_err(map_manager_err)
60 }
61
62 pub async fn get(&self, id: &str) -> Result<models::BabeldeskItemResponse, ManagerError> {
64 let cfg = self.cfg.get().await?;
65 let cfg = cfg.as_ref();
66 with_retry(&self.retry, true, || api::get_babeldesk(cfg, id))
67 .await
68 .map_err(map_manager_err)
69 }
70
71 pub async fn update(
73 &self,
74 id: &str,
75 body: models::RestUpdateBabeldesk,
76 ) -> Result<models::BabeldeskItemResponse, ManagerError> {
77 let cfg = self.cfg.get().await?;
78 let cfg = cfg.as_ref();
79 with_retry(&self.retry, false, || {
80 api::update_babeldesk(cfg, id, body.clone())
81 })
82 .await
83 .map_err(map_manager_err)
84 }
85
86 pub async fn delete(&self, id: &str) -> Result<(), ManagerError> {
88 let cfg = self.cfg.get().await?;
89 let cfg = cfg.as_ref();
90 with_retry(&self.retry, false, || api::delete_babeldesk(cfg, id))
91 .await
92 .map_err(map_manager_err)?;
93 Ok(())
94 }
95}
96
97pub struct BabeldeskWidgetsResource {
99 pub(crate) cfg: SharedCfg<Configuration>,
100 pub(crate) retry: RetryPolicy,
101}
102
103impl BabeldeskWidgetsResource {
104 pub async fn list_all(&self) -> Result<Vec<models::BabeldeskWidget>, ManagerError> {
106 let cfg = self.cfg.get().await?;
107 let cfg = cfg.as_ref();
108 collect_all(&self.retry, map_manager_err, |page| async move {
109 let r = widget_api::list_babeldesk_widgets(cfg, Some(page), None).await?;
110 Ok((
111 r.items,
112 r.pagination.pages.unwrap_or(1),
113 r.pagination.current.unwrap_or(1),
114 ))
115 })
116 .await
117 }
118
119 pub async fn create(
121 &self,
122 body: models::RestCreateBabeldeskWidget,
123 ) -> Result<models::BabeldeskWidgetItemResponse, ManagerError> {
124 let cfg = self.cfg.get().await?;
125 let cfg = cfg.as_ref();
126 with_retry(&self.retry, false, || {
127 widget_api::create_babeldesk_widget(cfg, body.clone())
128 })
129 .await
130 .map_err(map_manager_err)
131 }
132
133 pub async fn get(&self, id: &str) -> Result<models::BabeldeskWidgetItemResponse, ManagerError> {
135 let cfg = self.cfg.get().await?;
136 let cfg = cfg.as_ref();
137 with_retry(&self.retry, true, || {
138 widget_api::get_babeldesk_widget(cfg, id)
139 })
140 .await
141 .map_err(map_manager_err)
142 }
143
144 pub async fn update(
146 &self,
147 id: &str,
148 body: models::RestUpdateBabeldeskWidget,
149 ) -> Result<models::BabeldeskWidgetItemResponse, ManagerError> {
150 let cfg = self.cfg.get().await?;
151 let cfg = cfg.as_ref();
152 with_retry(&self.retry, false, || {
153 widget_api::update_babeldesk_widget(cfg, id, body.clone())
154 })
155 .await
156 .map_err(map_manager_err)
157 }
158
159 pub async fn delete(&self, id: &str) -> Result<(), ManagerError> {
161 let cfg = self.cfg.get().await?;
162 let cfg = cfg.as_ref();
163 with_retry(&self.retry, false, || {
164 widget_api::delete_babeldesk_widget(cfg, id)
165 })
166 .await
167 .map_err(map_manager_err)?;
168 Ok(())
169 }
170}