Skip to main content

itchio_api/
users.rs

1use serde::Deserialize;
2
3use crate::{Itchio, ItchioError, SmallUser};
4
5#[derive(Clone, Debug, Deserialize)]
6struct WrappedUser {
7  user: SmallUser
8}
9
10impl Itchio {
11  /// Using a user_id, get some information about a User.
12  pub async fn get_user(&self, user: u32) -> Result<SmallUser, ItchioError> {
13    let endpoint = format!("users/{}", user);
14    let response = self.request::<WrappedUser>(endpoint).await?;
15    Ok(response.user)
16  }
17}
18
19#[cfg(test)]
20mod tests {
21  use super::*;
22  use std::env;
23  use dotenv::dotenv;
24
25  #[tokio::test]
26  async fn good() {
27    dotenv().ok();
28    let client_secret = env::var("KEY").expect("KEY has to be set");
29    let api = Itchio::new(client_secret).unwrap();
30    let user = api.get_user(5771143).await.inspect_err(|err| eprintln!("Error spotted: {}", err));
31    assert!(user.is_ok())
32  }
33
34  #[tokio::test]
35  async fn bad_user() {
36    dotenv().ok();
37    let client_secret = env::var("KEY").expect("KEY has to be set");
38    let api = Itchio::new(client_secret).unwrap();
39    let user = api.get_user(0).await;
40    assert!(user.is_err_and(|err| matches!(err, ItchioError::NotFound)))
41  }
42
43  #[tokio::test]
44  async fn bad_key() {
45    let api = Itchio::new("bad_key".to_string()).unwrap();
46    let user = api.get_user(5771143).await;
47    assert!(user.is_err_and(|err| matches!(err, ItchioError::BadKey)))
48  }
49}