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