thrash/
user.rs

1use client::Client;
2
3use failure::Error;
4use std::fmt;
5
6#[derive(Debug, Deserialize, Serialize, PartialEq, Eq, Hash)]
7#[serde(rename_all = "camelCase")]
8pub struct User {
9    name: String,
10    email_address: Option<String>,
11    id: u64,
12    display_name: String,
13    active: bool,
14    slug: String,
15    #[serde(rename = "type")]
16    _type: String,
17}
18
19impl fmt::Display for User {
20    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
21        write!(f, "{}", self.display_name)
22    }
23}
24
25impl Client {
26    pub fn users_admin(&mut self) -> Result<Vec<User>, Error> {
27        let url = "rest/api/1.0/admin/users";
28        self.get_paged(&url)
29    }
30
31    pub fn users(&mut self) -> Result<Vec<User>, Error> {
32        let url = "rest/api/1.0/users";
33        self.get_paged(&url)
34    }
35
36    pub fn user(&mut self, user_slug: &str) -> Result<User, Error> {
37        let url = format!("rest/api/1.0/users/{}", user_slug);
38        self.get(&url)
39    }
40}
41
42impl User {
43    pub fn name(&self) -> &str {
44        &self.name
45    }
46}