Skip to main content

babelforce_manager_sdk/resources/
conferences.rs

1use crate::error::{map_manager_err, ManagerError};
2use crate::gen::manager::apis::conference_api as api;
3use crate::gen::manager::apis::configuration::Configuration;
4use crate::gen::manager::models;
5use crate::http::collect_all;
6use crate::retry::{with_retry, RetryPolicy};
7use crate::token::SharedCfg;
8
9/// Conferences — `/api/v2/conferences`.
10pub struct ConferencesResource {
11    pub(crate) cfg: SharedCfg<Configuration>,
12    pub(crate) retry: RetryPolicy,
13}
14
15impl ConferencesResource {
16    /// List all conferences (auto-paginated).
17    pub async fn list_all(&self) -> Result<Vec<models::Conference>, ManagerError> {
18        let cfg = self.cfg.get().await?;
19        let cfg = cfg.as_ref();
20        collect_all(&self.retry, map_manager_err, |page| async move {
21            let r = api::list_conferences(cfg, Some(page), None).await?;
22            Ok((r.items, r.pagination.pages, r.pagination.current))
23        })
24        .await
25    }
26
27    /// Get a single conference by id.
28    pub async fn get(&self, id: &str) -> Result<models::ConferenceItemResponse, ManagerError> {
29        let cfg = self.cfg.get().await?;
30        let cfg = cfg.as_ref();
31        with_retry(&self.retry, true, || api::get_conference(cfg, id))
32            .await
33            .map_err(map_manager_err)
34    }
35}