harbor_api/apis/
usergroup_api.rs

1/*
2 * Harbor API
3 *
4 * These APIs provide services for manipulating Harbor project.
5 *
6 * The version of the OpenAPI document: 2.0
7 * 
8 * Generated by: https://openapi-generator.tech
9 */
10
11
12use reqwest;
13use serde::{Deserialize, Serialize, de::Error as _};
14use crate::{apis::ResponseContent, models};
15use super::{Error, configuration, ContentType};
16
17/// struct for passing parameters to the method [`create_user_group`]
18#[derive(Clone, Debug)]
19pub struct CreateUserGroupParams {
20    /// An unique ID for the request
21    pub x_request_id: Option<String>,
22    pub usergroup: Option<models::UserGroup>
23}
24
25/// struct for passing parameters to the method [`delete_user_group`]
26#[derive(Clone, Debug)]
27pub struct DeleteUserGroupParams {
28    pub group_id: i32,
29    /// An unique ID for the request
30    pub x_request_id: Option<String>
31}
32
33/// struct for passing parameters to the method [`get_user_group`]
34#[derive(Clone, Debug)]
35pub struct GetUserGroupParams {
36    /// Group ID
37    pub group_id: i64,
38    /// An unique ID for the request
39    pub x_request_id: Option<String>
40}
41
42/// struct for passing parameters to the method [`list_user_groups`]
43#[derive(Clone, Debug)]
44pub struct ListUserGroupsParams {
45    /// An unique ID for the request
46    pub x_request_id: Option<String>,
47    /// The page number
48    pub page: Option<i64>,
49    /// The size of per page
50    pub page_size: Option<i64>,
51    /// search with ldap group DN
52    pub ldap_group_dn: Option<String>,
53    /// group name need to search, fuzzy matches
54    pub group_name: Option<String>
55}
56
57/// struct for passing parameters to the method [`search_user_groups`]
58#[derive(Clone, Debug)]
59pub struct SearchUserGroupsParams {
60    /// Group name for filtering results.
61    pub groupname: String,
62    /// An unique ID for the request
63    pub x_request_id: Option<String>,
64    /// The page number
65    pub page: Option<i64>,
66    /// The size of per page
67    pub page_size: Option<i64>
68}
69
70/// struct for passing parameters to the method [`update_user_group`]
71#[derive(Clone, Debug)]
72pub struct UpdateUserGroupParams {
73    /// Group ID
74    pub group_id: i64,
75    /// An unique ID for the request
76    pub x_request_id: Option<String>,
77    pub usergroup: Option<models::UserGroup>
78}
79
80
81/// struct for typed errors of method [`create_user_group`]
82#[derive(Debug, Clone, Serialize, Deserialize)]
83#[serde(untagged)]
84pub enum CreateUserGroupError {
85    Status400(models::Errors),
86    Status401(models::Errors),
87    Status403(models::Errors),
88    Status409(models::Errors),
89    Status500(models::Errors),
90    UnknownValue(serde_json::Value),
91}
92
93/// struct for typed errors of method [`delete_user_group`]
94#[derive(Debug, Clone, Serialize, Deserialize)]
95#[serde(untagged)]
96pub enum DeleteUserGroupError {
97    Status400(models::Errors),
98    Status401(models::Errors),
99    Status403(models::Errors),
100    Status500(models::Errors),
101    UnknownValue(serde_json::Value),
102}
103
104/// struct for typed errors of method [`get_user_group`]
105#[derive(Debug, Clone, Serialize, Deserialize)]
106#[serde(untagged)]
107pub enum GetUserGroupError {
108    Status400(models::Errors),
109    Status401(models::Errors),
110    Status403(models::Errors),
111    Status404(models::Errors),
112    Status500(models::Errors),
113    UnknownValue(serde_json::Value),
114}
115
116/// struct for typed errors of method [`list_user_groups`]
117#[derive(Debug, Clone, Serialize, Deserialize)]
118#[serde(untagged)]
119pub enum ListUserGroupsError {
120    Status401(models::Errors),
121    Status403(models::Errors),
122    Status500(models::Errors),
123    UnknownValue(serde_json::Value),
124}
125
126/// struct for typed errors of method [`search_user_groups`]
127#[derive(Debug, Clone, Serialize, Deserialize)]
128#[serde(untagged)]
129pub enum SearchUserGroupsError {
130    Status401(models::Errors),
131    Status500(models::Errors),
132    UnknownValue(serde_json::Value),
133}
134
135/// struct for typed errors of method [`update_user_group`]
136#[derive(Debug, Clone, Serialize, Deserialize)]
137#[serde(untagged)]
138pub enum UpdateUserGroupError {
139    Status400(models::Errors),
140    Status401(models::Errors),
141    Status403(models::Errors),
142    Status404(models::Errors),
143    Status500(models::Errors),
144    UnknownValue(serde_json::Value),
145}
146
147
148/// Create user group information
149pub async fn create_user_group(configuration: &configuration::Configuration, params: CreateUserGroupParams) -> Result<(), Error<CreateUserGroupError>> {
150
151    let uri_str = format!("{}/usergroups", configuration.base_path);
152    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
153
154    if let Some(ref user_agent) = configuration.user_agent {
155        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
156    }
157    if let Some(param_value) = params.x_request_id {
158        req_builder = req_builder.header("X-Request-Id", param_value.to_string());
159    }
160    if let Some(ref auth_conf) = configuration.basic_auth {
161        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
162    };
163    req_builder = req_builder.json(&params.usergroup);
164
165    let req = req_builder.build()?;
166    let resp = configuration.client.execute(req).await?;
167
168    let status = resp.status();
169
170    if !status.is_client_error() && !status.is_server_error() {
171        Ok(())
172    } else {
173        let content = resp.text().await?;
174        let entity: Option<CreateUserGroupError> = serde_json::from_str(&content).ok();
175        Err(Error::ResponseError(ResponseContent { status, content, entity }))
176    }
177}
178
179/// Delete user group
180pub async fn delete_user_group(configuration: &configuration::Configuration, params: DeleteUserGroupParams) -> Result<(), Error<DeleteUserGroupError>> {
181
182    let uri_str = format!("{}/usergroups/{group_id}", configuration.base_path, group_id=params.group_id);
183    let mut req_builder = configuration.client.request(reqwest::Method::DELETE, &uri_str);
184
185    if let Some(ref user_agent) = configuration.user_agent {
186        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
187    }
188    if let Some(param_value) = params.x_request_id {
189        req_builder = req_builder.header("X-Request-Id", param_value.to_string());
190    }
191    if let Some(ref auth_conf) = configuration.basic_auth {
192        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
193    };
194
195    let req = req_builder.build()?;
196    let resp = configuration.client.execute(req).await?;
197
198    let status = resp.status();
199
200    if !status.is_client_error() && !status.is_server_error() {
201        Ok(())
202    } else {
203        let content = resp.text().await?;
204        let entity: Option<DeleteUserGroupError> = serde_json::from_str(&content).ok();
205        Err(Error::ResponseError(ResponseContent { status, content, entity }))
206    }
207}
208
209/// Get user group information
210pub async fn get_user_group(configuration: &configuration::Configuration, params: GetUserGroupParams) -> Result<models::UserGroup, Error<GetUserGroupError>> {
211
212    let uri_str = format!("{}/usergroups/{group_id}", configuration.base_path, group_id=params.group_id);
213    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
214
215    if let Some(ref user_agent) = configuration.user_agent {
216        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
217    }
218    if let Some(param_value) = params.x_request_id {
219        req_builder = req_builder.header("X-Request-Id", param_value.to_string());
220    }
221    if let Some(ref auth_conf) = configuration.basic_auth {
222        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
223    };
224
225    let req = req_builder.build()?;
226    let resp = configuration.client.execute(req).await?;
227
228    let status = resp.status();
229    let content_type = resp
230        .headers()
231        .get("content-type")
232        .and_then(|v| v.to_str().ok())
233        .unwrap_or("application/octet-stream");
234    let content_type = super::ContentType::from(content_type);
235
236    if !status.is_client_error() && !status.is_server_error() {
237        let content = resp.text().await?;
238        match content_type {
239            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
240            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::UserGroup`"))),
241            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::UserGroup`")))),
242        }
243    } else {
244        let content = resp.text().await?;
245        let entity: Option<GetUserGroupError> = serde_json::from_str(&content).ok();
246        Err(Error::ResponseError(ResponseContent { status, content, entity }))
247    }
248}
249
250/// Get all user groups information, it is open for system admin
251pub async fn list_user_groups(configuration: &configuration::Configuration, params: ListUserGroupsParams) -> Result<Vec<models::UserGroup>, Error<ListUserGroupsError>> {
252
253    let uri_str = format!("{}/usergroups", configuration.base_path);
254    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
255
256    if let Some(ref param_value) = params.page {
257        req_builder = req_builder.query(&[("page", &param_value.to_string())]);
258    }
259    if let Some(ref param_value) = params.page_size {
260        req_builder = req_builder.query(&[("page_size", &param_value.to_string())]);
261    }
262    if let Some(ref param_value) = params.ldap_group_dn {
263        req_builder = req_builder.query(&[("ldap_group_dn", &param_value.to_string())]);
264    }
265    if let Some(ref param_value) = params.group_name {
266        req_builder = req_builder.query(&[("group_name", &param_value.to_string())]);
267    }
268    if let Some(ref user_agent) = configuration.user_agent {
269        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
270    }
271    if let Some(param_value) = params.x_request_id {
272        req_builder = req_builder.header("X-Request-Id", param_value.to_string());
273    }
274    if let Some(ref auth_conf) = configuration.basic_auth {
275        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
276    };
277
278    let req = req_builder.build()?;
279    let resp = configuration.client.execute(req).await?;
280
281    let status = resp.status();
282    let content_type = resp
283        .headers()
284        .get("content-type")
285        .and_then(|v| v.to_str().ok())
286        .unwrap_or("application/octet-stream");
287    let content_type = super::ContentType::from(content_type);
288
289    if !status.is_client_error() && !status.is_server_error() {
290        let content = resp.text().await?;
291        match content_type {
292            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
293            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `Vec&lt;models::UserGroup&gt;`"))),
294            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `Vec&lt;models::UserGroup&gt;`")))),
295        }
296    } else {
297        let content = resp.text().await?;
298        let entity: Option<ListUserGroupsError> = serde_json::from_str(&content).ok();
299        Err(Error::ResponseError(ResponseContent { status, content, entity }))
300    }
301}
302
303/// This endpoint is to search groups by group name.  It's open for all authenticated requests. 
304pub async fn search_user_groups(configuration: &configuration::Configuration, params: SearchUserGroupsParams) -> Result<Vec<models::UserGroupSearchItem>, Error<SearchUserGroupsError>> {
305
306    let uri_str = format!("{}/usergroups/search", configuration.base_path);
307    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
308
309    if let Some(ref param_value) = params.page {
310        req_builder = req_builder.query(&[("page", &param_value.to_string())]);
311    }
312    if let Some(ref param_value) = params.page_size {
313        req_builder = req_builder.query(&[("page_size", &param_value.to_string())]);
314    }
315    req_builder = req_builder.query(&[("groupname", &params.groupname.to_string())]);
316    if let Some(ref user_agent) = configuration.user_agent {
317        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
318    }
319    if let Some(param_value) = params.x_request_id {
320        req_builder = req_builder.header("X-Request-Id", param_value.to_string());
321    }
322    if let Some(ref auth_conf) = configuration.basic_auth {
323        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
324    };
325
326    let req = req_builder.build()?;
327    let resp = configuration.client.execute(req).await?;
328
329    let status = resp.status();
330    let content_type = resp
331        .headers()
332        .get("content-type")
333        .and_then(|v| v.to_str().ok())
334        .unwrap_or("application/octet-stream");
335    let content_type = super::ContentType::from(content_type);
336
337    if !status.is_client_error() && !status.is_server_error() {
338        let content = resp.text().await?;
339        match content_type {
340            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
341            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `Vec&lt;models::UserGroupSearchItem&gt;`"))),
342            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `Vec&lt;models::UserGroupSearchItem&gt;`")))),
343        }
344    } else {
345        let content = resp.text().await?;
346        let entity: Option<SearchUserGroupsError> = serde_json::from_str(&content).ok();
347        Err(Error::ResponseError(ResponseContent { status, content, entity }))
348    }
349}
350
351/// Update user group information
352pub async fn update_user_group(configuration: &configuration::Configuration, params: UpdateUserGroupParams) -> Result<(), Error<UpdateUserGroupError>> {
353
354    let uri_str = format!("{}/usergroups/{group_id}", configuration.base_path, group_id=params.group_id);
355    let mut req_builder = configuration.client.request(reqwest::Method::PUT, &uri_str);
356
357    if let Some(ref user_agent) = configuration.user_agent {
358        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
359    }
360    if let Some(param_value) = params.x_request_id {
361        req_builder = req_builder.header("X-Request-Id", param_value.to_string());
362    }
363    if let Some(ref auth_conf) = configuration.basic_auth {
364        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
365    };
366    req_builder = req_builder.json(&params.usergroup);
367
368    let req = req_builder.build()?;
369    let resp = configuration.client.execute(req).await?;
370
371    let status = resp.status();
372
373    if !status.is_client_error() && !status.is_server_error() {
374        Ok(())
375    } else {
376        let content = resp.text().await?;
377        let entity: Option<UpdateUserGroupError> = serde_json::from_str(&content).ok();
378        Err(Error::ResponseError(ResponseContent { status, content, entity }))
379    }
380}
381