vt3/enterprise/accounts/
mod.rs

1mod response;
2use response::{ApiUsage, GroupMembers, GroupRoot, OverallQuotaRoot, UserRoot};
3
4use crate::{
5    utils::{http_delete, http_get, http_get_with_params},
6    VtClient, VtResult,
7};
8
9impl VtClient {
10    pub fn user_info(&self, id: &str) -> VtResult<UserRoot> {
11        //! Retrieve user information.
12        //!
13        //! ## Example Usage
14        //! ```rust
15        //! use vt3::VtClient;
16        //!
17        //! let vt = VtClient::new("Your API Key");
18        //! vt.user_info("user_id");
19        //! ```
20        let url = format!("{}/users/{}", self.endpoint, id);
21        http_get(&self.api_key, &self.user_agent, &url)
22    }
23
24    pub fn delete_user(&self, id: &str) -> VtResult<UserRoot> {
25        //! Delete a user.
26        //!
27        //! ## Example Usage
28        //! ```rust
29        //! use vt3::VtClient;
30        //!
31        //! let vt = VtClient::new("Your API Key");
32        //! vt.delete_user("user_id");
33        //! ```
34        let url = format!("{}/users/{}", self.endpoint, id);
35        http_delete(&self.api_key, &self.user_agent, &url)
36    }
37
38    pub fn api_usage(
39        &self,
40        id: &str,
41        start_date: Option<&str>,
42        end_date: Option<&str>,
43    ) -> VtResult<ApiUsage> {
44        //! Retrieve user's API usage.
45        //!
46        //! ## Example Usage
47        //! ```rust
48        //! use vt3::VtClient;
49        //!
50        //! let vt = VtClient::new("Your API Key");
51        //!
52        //! // start_date & end_date fomrat is: YYYYMMDD
53        //! vt.api_usage("user_id", None, None);
54        //! ```
55        let url = format!("{}/users/{}/api_usage", self.endpoint, id);
56        let mut query_params: Vec<(&str, &str)> = Vec::new();
57        if let Some(s) = start_date {
58            query_params.push(("start_date", s))
59        }
60        if let Some(e) = end_date {
61            query_params.push(("end_date", e))
62        }
63        http_get_with_params(
64            &self.api_key,
65            &self.user_agent,
66            &url,
67            &query_params.as_slice(),
68        )
69    }
70
71    pub fn overall_quotas(&self, id: &str) -> VtResult<OverallQuotaRoot> {
72        //! User's overall quotas.
73        //!
74        //! ## Example Usage
75        //! ```rust
76        //! use vt3::VtClient;
77        //!
78        //! let vt = VtClient::new("Your API Key");
79        //! vt.overall_quotas("user_id");
80        //! ```
81        let url = format!("{}/users/{}/overall_quotas", self.endpoint, id);
82        http_get(&self.api_key, &self.user_agent, &url)
83    }
84
85    pub fn group_info(&self, id: &str) -> VtResult<GroupRoot> {
86        //! Retrieve group information.
87        //!
88        //! ## Example Usage
89        //! ```rust
90        //! use vt3::VtClient;
91        //!
92        //! let vt = VtClient::new("Your API Key");
93        //! vt.overall_quotas("user_id");
94        //! ```
95        let url = format!("{}/groups/{}", self.endpoint, id);
96        http_get(&self.api_key, &self.user_agent, &url)
97    }
98
99    pub fn group_members(&self, id: &str) -> VtResult<GroupMembers> {
100        //! Retrieve group members.
101        //!
102        //! ## Example Usage
103        //! ```rust
104        //! use vt3::VtClient;
105        //!
106        //! let vt = VtClient::new("Your API Key");
107        //! vt.group_members("user_id");
108        //! ```
109        let url = format!("{}/groups/{}/relationships/users", self.endpoint, id);
110        http_get(&self.api_key, &self.user_agent, &url)
111    }
112
113    pub fn group_api_usage(
114        &self,
115        id: &str,
116        start_date: Option<&str>,
117        end_date: Option<&str>,
118    ) -> VtResult<ApiUsage> {
119        //! Retrieve group's API usage.
120        //!
121        //! ## Example Usage
122        //! ```rust
123        //! use vt3::VtClient;
124        //!
125        //! let vt = VtClient::new("Your API Key");
126        //!
127        //! // start_date & end_date fomrat is: YYYYMMDD
128        //! vt.group_api_usage("user_id", None, None);
129        //! ```
130        let url = format!("{}/groups/{}/api_usage", self.endpoint, id);
131        let mut query_params: Vec<(&str, &str)> = Vec::new();
132        if let Some(s) = start_date {
133            query_params.push(("start_date", s))
134        }
135        if let Some(e) = end_date {
136            query_params.push(("end_date", e))
137        }
138        http_get_with_params(
139            &self.api_key,
140            &self.user_agent,
141            &url,
142            &query_params.as_slice(),
143        )
144    }
145}