Skip to main content

babelforce_manager_sdk/resources/
metrics.rs

1use crate::error::{map_manager_err, ManagerError};
2use crate::gen::manager::apis::configuration::Configuration;
3use crate::gen::manager::apis::{manager_api, metric_api};
4use crate::gen::manager::models;
5use crate::retry::{with_retry, RetryPolicy};
6use crate::token::SharedCfg;
7
8/// Metrics — `/api/v2/metrics`.
9pub struct MetricsResource {
10    pub(crate) cfg: SharedCfg<Configuration>,
11    pub(crate) retry: RetryPolicy,
12}
13
14impl MetricsResource {
15    /// List the available metric ids.
16    pub async fn list_ids(&self) -> Result<models::MetricIdItemsResponse, ManagerError> {
17        let cfg = self.cfg.get().await?;
18        let cfg = cfg.as_ref();
19        with_retry(&self.retry, true, || manager_api::list_metric_ids(cfg))
20            .await
21            .map_err(map_manager_err)
22    }
23
24    /// List all metric definitions.
25    pub async fn definitions(&self) -> Result<models::MetricDefinitionListResponse, ManagerError> {
26        let cfg = self.cfg.get().await?;
27        let cfg = cfg.as_ref();
28        with_retry(&self.retry, true, || {
29            manager_api::get_all_metric_definitions(cfg)
30        })
31        .await
32        .map_err(map_manager_err)
33    }
34
35    /// Get a metric's current value by id.
36    pub async fn get(&self, id: &str) -> Result<models::MetricResponse, ManagerError> {
37        let cfg = self.cfg.get().await?;
38        let cfg = cfg.as_ref();
39        with_retry(&self.retry, true, || manager_api::get_metric(cfg, id))
40            .await
41            .map_err(map_manager_err)
42    }
43
44    /// Get a metric's definition by id.
45    pub async fn describe(
46        &self,
47        id: &str,
48    ) -> Result<models::MetricDefinitionItemResponse, ManagerError> {
49        let cfg = self.cfg.get().await?;
50        let cfg = cfg.as_ref();
51        with_retry(&self.retry, true, || {
52            metric_api::get_metric_definition(cfg, id)
53        })
54        .await
55        .map_err(map_manager_err)
56    }
57}