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((r.items, r.pagination.pages, r.pagination.current))
26 })
27 .await
28 }
29
30 pub async fn widget_settings(
32 &self,
33 r#type: &str,
34 ) -> Result<models::WidgetSettingsResponse, ManagerError> {
35 let cfg = self.cfg.get().await?;
36 let cfg = cfg.as_ref();
37 with_retry(&self.retry, true, || {
38 manager_api::get_widget_settings(cfg, r#type)
39 })
40 .await
41 .map_err(map_manager_err)
42 }
43
44 pub async fn create(
46 &self,
47 body: models::RestCreateBabeldesk,
48 ) -> Result<models::BabeldeskItemResponse, ManagerError> {
49 let cfg = self.cfg.get().await?;
50 let cfg = cfg.as_ref();
51 with_retry(&self.retry, false, || {
52 api::create_babeldesk(cfg, body.clone())
53 })
54 .await
55 .map_err(map_manager_err)
56 }
57
58 pub async fn get(&self, id: &str) -> Result<models::BabeldeskItemResponse, ManagerError> {
60 let cfg = self.cfg.get().await?;
61 let cfg = cfg.as_ref();
62 with_retry(&self.retry, true, || api::get_babeldesk(cfg, id))
63 .await
64 .map_err(map_manager_err)
65 }
66
67 pub async fn update(
69 &self,
70 id: &str,
71 body: models::RestUpdateBabeldesk,
72 ) -> Result<models::BabeldeskItemResponse, ManagerError> {
73 let cfg = self.cfg.get().await?;
74 let cfg = cfg.as_ref();
75 with_retry(&self.retry, false, || {
76 api::update_babeldesk(cfg, id, body.clone())
77 })
78 .await
79 .map_err(map_manager_err)
80 }
81
82 pub async fn delete(&self, id: &str) -> Result<(), ManagerError> {
84 let cfg = self.cfg.get().await?;
85 let cfg = cfg.as_ref();
86 with_retry(&self.retry, false, || api::delete_babeldesk(cfg, id))
87 .await
88 .map_err(map_manager_err)?;
89 Ok(())
90 }
91}
92
93pub struct BabeldeskWidgetsResource {
95 pub(crate) cfg: SharedCfg<Configuration>,
96 pub(crate) retry: RetryPolicy,
97}
98
99impl BabeldeskWidgetsResource {
100 pub async fn list_all(&self) -> Result<Vec<models::BabeldeskWidget>, ManagerError> {
102 let cfg = self.cfg.get().await?;
103 let cfg = cfg.as_ref();
104 collect_all(&self.retry, map_manager_err, |page| async move {
105 let r = widget_api::list_babeldesk_widgets(cfg, Some(page), None).await?;
106 Ok((r.items, r.pagination.pages, r.pagination.current))
107 })
108 .await
109 }
110
111 pub async fn create(
113 &self,
114 body: models::RestCreateBabeldeskWidget,
115 ) -> Result<models::BabeldeskWidgetItemResponse, ManagerError> {
116 let cfg = self.cfg.get().await?;
117 let cfg = cfg.as_ref();
118 with_retry(&self.retry, false, || {
119 widget_api::create_babeldesk_widget(cfg, body.clone())
120 })
121 .await
122 .map_err(map_manager_err)
123 }
124
125 pub async fn get(&self, id: &str) -> Result<models::BabeldeskWidgetItemResponse, ManagerError> {
127 let cfg = self.cfg.get().await?;
128 let cfg = cfg.as_ref();
129 with_retry(&self.retry, true, || {
130 widget_api::get_babeldesk_widget(cfg, id)
131 })
132 .await
133 .map_err(map_manager_err)
134 }
135
136 pub async fn update(
138 &self,
139 id: &str,
140 body: models::RestUpdateBabeldeskWidget,
141 ) -> Result<models::BabeldeskWidgetItemResponse, ManagerError> {
142 let cfg = self.cfg.get().await?;
143 let cfg = cfg.as_ref();
144 with_retry(&self.retry, false, || {
145 widget_api::update_babeldesk_widget(cfg, id, body.clone())
146 })
147 .await
148 .map_err(map_manager_err)
149 }
150
151 pub async fn delete(&self, id: &str) -> Result<(), ManagerError> {
153 let cfg = self.cfg.get().await?;
154 let cfg = cfg.as_ref();
155 with_retry(&self.retry, false, || {
156 widget_api::delete_babeldesk_widget(cfg, id)
157 })
158 .await
159 .map_err(map_manager_err)?;
160 Ok(())
161 }
162}