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}