gitea_sdk/api/orgs/
create.rs

1use build_it::Builder;
2use serde::{Deserialize, Serialize};
3
4use crate::{
5    error::Result,
6    model::orgs::{Organization, Visibility},
7    Client,
8};
9
10#[derive(Debug, Serialize, Deserialize, Builder)]
11#[build_it(into)]
12pub struct CreateOrgBuilder {
13    #[skip]
14    username: String,
15    description: Option<String>,
16    email: Option<String>,
17    full_name: Option<String>,
18    location: Option<String>,
19    repo_admin_change_team_access: Option<bool>,
20    visibility: Option<Visibility>,
21    website: Option<String>,
22}
23
24impl CreateOrgBuilder {
25    pub fn new(name: impl ToString) -> Self {
26        Self {
27            username: name.to_string(),
28            description: None,
29            email: None,
30            full_name: None,
31            location: None,
32            repo_admin_change_team_access: None,
33            visibility: None,
34            website: None,
35        }
36    }
37    /// Send the request to create an [Organization].
38    pub async fn send(&self, client: &Client) -> Result<Organization> {
39        let req = client.post("orgs").json(&self).build()?;
40        let res = client.make_request(req).await?;
41        client.parse_response(res).await
42    }
43}