pcloud/general/
gettoken.rs1#[derive(Debug, serde::Deserialize)]
2pub struct Token {
3 #[serde(rename = "auth")]
4 pub value: String,
5}
6
7#[derive(serde::Serialize)]
8struct Params {
9 getauth: u8,
10}
11
12impl Default for Params {
13 fn default() -> Self {
14 Self { getauth: 1 }
15 }
16}
17
18impl crate::Client {
19 pub async fn get_token(&self) -> crate::Result<String> {
39 self.get_request::<Token, _>("userinfo", &Params::default())
40 .await
41 .map(|token| token.value)
42 }
43}
44
45#[cfg(test)]
46mod tests {
47 use crate::{Client, Credentials};
48 use mockito::Matcher;
49
50 #[tokio::test]
51 async fn success() {
52 let mut server = mockito::Server::new_async().await;
53 let m = server.mock("GET", "/getdigest")
54 .match_query(Matcher::Missing)
55 .with_status(200)
56 .with_body(r#"{"result": 0, "digest": "YGtAxbUpI85Zvs7lC7Z62rBwv907TBXhV2L867Hkh", "expires": "Fri, 27 Sep 2013 10:15:46 +0000"}"#)
57 .create_async().await;
58 let client = Client::new(server.url(), Credentials::anonymous()).unwrap();
59 let result = client.get_digest().await.unwrap();
60 assert_eq!(result.value, "YGtAxbUpI85Zvs7lC7Z62rBwv907TBXhV2L867Hkh");
61 m.assert_async().await;
62 }
63}