1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
use crate::client::NoBody;
use crate::client::scope::{Metrics, Scoped};
use crate::{Error, types::*};
impl<S: Metrics> Scoped<'_, S> {
/// GET `{scope}/metrics/events`, event counts bucketed over time, keyed by
/// event type.
pub async fn get_metrics_events(&self, query: MetricsQuery) -> Result<MetricsEvents, Error> {
self.client
.request(
reqwest::Method::GET,
&format!("{}/metrics/events", self.base()),
&query.query("event_types"),
None::<&NoBody>,
)
.await
}
/// GET `{scope}/metrics/usage`, usage values bucketed over time, keyed by
/// usage type.
pub async fn get_metrics_usage(&self, query: MetricsQuery) -> Result<MetricsUsage, Error> {
self.client
.request(
reqwest::Method::GET,
&format!("{}/metrics/usage", self.base()),
&query.query("usage_types"),
None::<&NoBody>,
)
.await
}
/// GET `{scope}/metrics/rates`, bounce/complaint rates bucketed over time,
/// keyed by rate type. Set [`MetricsQuery::window`] to pick the window
/// each rate is computed over.
pub async fn get_metrics_rates(&self, query: MetricsQuery) -> Result<MetricsRates, Error> {
self.client
.request(
reqwest::Method::GET,
&format!("{}/metrics/rates", self.base()),
&query.query("rate_types"),
None::<&NoBody>,
)
.await
}
}