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}