forem_openapi_client/apis/
organizations_api.rs

1/*
2 * Forem API V1
3 *
4 * Access Forem articles, users and other resources via API.         For a real-world example of Forem in action, check out [DEV](https://www.dev.to).         All endpoints can be accessed with the 'api-key' header and a accept header, but         some of them are accessible publicly without authentication.          Dates and date times, unless otherwise specified, must be in         the [RFC 3339](https://tools.ietf.org/html/rfc3339) format.
5 *
6 * The version of the OpenAPI document: 1.0.0
7 *
8 * Generated by: https://openapi-generator.tech
9 */
10
11use reqwest;
12
13use super::{configuration, Error};
14use crate::apis::ResponseContent;
15
16/// struct for typed errors of method [`get_org_articles`]
17#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(untagged)]
19pub enum GetOrgArticlesError {
20    Status404(),
21    UnknownValue(serde_json::Value),
22}
23
24/// struct for typed errors of method [`get_org_users`]
25#[derive(Debug, Clone, Serialize, Deserialize)]
26#[serde(untagged)]
27pub enum GetOrgUsersError {
28    Status404(),
29    UnknownValue(serde_json::Value),
30}
31
32/// struct for typed errors of method [`get_organization`]
33#[derive(Debug, Clone, Serialize, Deserialize)]
34#[serde(untagged)]
35pub enum GetOrganizationError {
36    Status404(),
37    UnknownValue(serde_json::Value),
38}
39
40/// This endpoint allows the client to retrieve a list of Articles belonging to the organization  It supports pagination, each page will contain `30` users by default.
41pub async fn get_org_articles(
42    configuration: &configuration::Configuration,
43    username: &str,
44    page: Option<i32>,
45    per_page: Option<i32>,
46) -> Result<Vec<crate::models::ArticleIndex>, Error<GetOrgArticlesError>> {
47    let local_var_configuration = configuration;
48
49    let local_var_client = &local_var_configuration.client;
50
51    let local_var_uri_str = format!(
52        "{}/api/organizations/{username}/articles",
53        local_var_configuration.base_path,
54        username = crate::apis::urlencode(username)
55    );
56    let mut local_var_req_builder =
57        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
58
59    if let Some(ref local_var_str) = page {
60        local_var_req_builder =
61            local_var_req_builder.query(&[("page", &local_var_str.to_string())]);
62    }
63    if let Some(ref local_var_str) = per_page {
64        local_var_req_builder =
65            local_var_req_builder.query(&[("per_page", &local_var_str.to_string())]);
66    }
67    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
68        local_var_req_builder =
69            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
70    }
71
72    let local_var_req = local_var_req_builder.build()?;
73    let local_var_resp = local_var_client.execute(local_var_req).await?;
74
75    let local_var_status = local_var_resp.status();
76    let local_var_content = local_var_resp.text().await?;
77
78    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
79        serde_json::from_str(&local_var_content).map_err(Error::from)
80    } else {
81        let local_var_entity: Option<GetOrgArticlesError> =
82            serde_json::from_str(&local_var_content).ok();
83        let local_var_error = ResponseContent {
84            status: local_var_status,
85            content: local_var_content,
86            entity: local_var_entity,
87        };
88        Err(Error::ResponseError(local_var_error))
89    }
90}
91
92/// This endpoint allows the client to retrieve a list of users belonging to the organization  It supports pagination, each page will contain `30` users by default.
93pub async fn get_org_users(
94    configuration: &configuration::Configuration,
95    username: &str,
96    page: Option<i32>,
97    per_page: Option<i32>,
98) -> Result<Vec<crate::models::User>, Error<GetOrgUsersError>> {
99    let local_var_configuration = configuration;
100
101    let local_var_client = &local_var_configuration.client;
102
103    let local_var_uri_str = format!(
104        "{}/api/organizations/{username}/users",
105        local_var_configuration.base_path,
106        username = crate::apis::urlencode(username)
107    );
108    let mut local_var_req_builder =
109        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
110
111    if let Some(ref local_var_str) = page {
112        local_var_req_builder =
113            local_var_req_builder.query(&[("page", &local_var_str.to_string())]);
114    }
115    if let Some(ref local_var_str) = per_page {
116        local_var_req_builder =
117            local_var_req_builder.query(&[("per_page", &local_var_str.to_string())]);
118    }
119    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
120        local_var_req_builder =
121            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
122    }
123
124    let local_var_req = local_var_req_builder.build()?;
125    let local_var_resp = local_var_client.execute(local_var_req).await?;
126
127    let local_var_status = local_var_resp.status();
128    let local_var_content = local_var_resp.text().await?;
129
130    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
131        serde_json::from_str(&local_var_content).map_err(Error::from)
132    } else {
133        let local_var_entity: Option<GetOrgUsersError> =
134            serde_json::from_str(&local_var_content).ok();
135        let local_var_error = ResponseContent {
136            status: local_var_status,
137            content: local_var_content,
138            entity: local_var_entity,
139        };
140        Err(Error::ResponseError(local_var_error))
141    }
142}
143
144/// This endpoint allows the client to retrieve a single organization by their username
145pub async fn get_organization(
146    configuration: &configuration::Configuration,
147    username: &str,
148) -> Result<Vec<crate::models::Organization>, Error<GetOrganizationError>> {
149    let local_var_configuration = configuration;
150
151    let local_var_client = &local_var_configuration.client;
152
153    let local_var_uri_str = format!(
154        "{}/api/organizations/{username}",
155        local_var_configuration.base_path,
156        username = crate::apis::urlencode(username)
157    );
158    let mut local_var_req_builder =
159        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
160
161    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
162        local_var_req_builder =
163            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
164    }
165
166    let local_var_req = local_var_req_builder.build()?;
167    let local_var_resp = local_var_client.execute(local_var_req).await?;
168
169    let local_var_status = local_var_resp.status();
170    let local_var_content = local_var_resp.text().await?;
171
172    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
173        serde_json::from_str(&local_var_content).map_err(Error::from)
174    } else {
175        let local_var_entity: Option<GetOrganizationError> =
176            serde_json::from_str(&local_var_content).ok();
177        let local_var_error = ResponseContent {
178            status: local_var_status,
179            content: local_var_content,
180            entity: local_var_entity,
181        };
182        Err(Error::ResponseError(local_var_error))
183    }
184}