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
46
47
48
49
50
51
52
use crate::client::HevyClient;
use crate::error::Result;
use crate::models::{BodyMeasurement, BodyMeasurementsPage, UpdateBodyMeasurement};
impl HevyClient {
/// Gets a paginated list of body measurements for the authenticated user.
///
/// `page` must be 1 or greater (defaults to `1`). `page_size` is capped at
/// 10 by the API (defaults to `10`).
pub async fn list_body_measurements(
&self,
page: Option<u32>,
page_size: Option<u32>,
) -> Result<BodyMeasurementsPage> {
self.get(
"/v1/body_measurements",
&[
("page", page.map(|p| p.to_string())),
("pageSize", page_size.map(|p| p.to_string())),
],
)
.await
}
/// Gets a single body measurement by date (`YYYY-MM-DD`).
pub async fn get_body_measurement(&self, date: &str) -> Result<BodyMeasurement> {
self.get(&format!("/v1/body_measurements/{date}"), &[])
.await
}
/// Creates a body measurement entry for the date contained in `measurement`.
///
/// Returns [`crate::HevyError::Api`] with status `409` if an entry already
/// exists for that date.
pub async fn create_body_measurement(&self, measurement: &BodyMeasurement) -> Result<()> {
self.post_no_content("/v1/body_measurements", measurement)
.await
}
/// Updates an existing body measurement entry for a given date
/// (`YYYY-MM-DD`).
///
/// All fields are overwritten; omitted fields are set to `null`.
pub async fn update_body_measurement(
&self,
date: &str,
measurement: &UpdateBodyMeasurement,
) -> Result<()> {
self.put_no_content(&format!("/v1/body_measurements/{date}"), measurement)
.await
}
}