pcloud/general/
getdigest.rs1use chrono::{DateTime, Utc};
2
3#[derive(Debug, serde::Deserialize)]
4pub struct Digest {
5 #[serde(rename = "digest")]
6 pub value: String,
7 #[serde(with = "crate::date")]
8 pub expires: DateTime<Utc>,
9}
10
11impl crate::Client {
12 pub async fn get_digest(&self) -> crate::Result<Digest> {
32 self.get_request("getdigest", &()).await
33 }
34}
35
36#[cfg(test)]
37mod tests {
38 use crate::{Client, Credentials};
39 use mockito::Matcher;
40
41 #[tokio::test]
42 async fn success() {
43 let mut server = mockito::Server::new_async().await;
44 let m = server.mock("GET", "/getdigest")
45 .match_query(Matcher::Missing)
46 .with_status(200)
47 .with_body(r#"{"result": 0, "digest": "YGtAxbUpI85Zvs7lC7Z62rBwv907TBXhV2L867Hkh", "expires": "Fri, 27 Sep 2013 10:15:46 +0000"}"#)
48 .create_async().await;
49 let client = Client::new(server.url(), Credentials::anonymous()).unwrap();
50 let result = client.get_digest().await.unwrap();
51 assert_eq!(result.value, "YGtAxbUpI85Zvs7lC7Z62rBwv907TBXhV2L867Hkh");
52 m.assert_async().await;
53 }
54}