openapi_github/apis/
classroom_api.rs

1/*
2 * GitHub's official OpenAPI spec + Octokit extension
3 *
4 * OpenAPI specs from https://github.com/github/rest-api-description with the 'x-octokit' extension required by the Octokit SDKs
5 *
6 * The version of the OpenAPI document: 16.6.0
7 * 
8 * Generated by: https://openapi-generator.tech
9 */
10
11
12use reqwest;
13use serde::{Deserialize, Serialize};
14use crate::{apis::ResponseContent, models};
15use super::{Error, configuration};
16
17
18/// struct for typed errors of method [`classroom_slash_get_a_classroom`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum ClassroomSlashGetAClassroomError {
22    Status404(models::BasicError),
23    UnknownValue(serde_json::Value),
24}
25
26/// struct for typed errors of method [`classroom_slash_get_an_assignment`]
27#[derive(Debug, Clone, Serialize, Deserialize)]
28#[serde(untagged)]
29pub enum ClassroomSlashGetAnAssignmentError {
30    Status404(models::BasicError),
31    UnknownValue(serde_json::Value),
32}
33
34/// struct for typed errors of method [`classroom_slash_get_assignment_grades`]
35#[derive(Debug, Clone, Serialize, Deserialize)]
36#[serde(untagged)]
37pub enum ClassroomSlashGetAssignmentGradesError {
38    Status404(models::BasicError),
39    UnknownValue(serde_json::Value),
40}
41
42/// struct for typed errors of method [`classroom_slash_list_accepted_assigments_for_an_assignment`]
43#[derive(Debug, Clone, Serialize, Deserialize)]
44#[serde(untagged)]
45pub enum ClassroomSlashListAcceptedAssigmentsForAnAssignmentError {
46    UnknownValue(serde_json::Value),
47}
48
49/// struct for typed errors of method [`classroom_slash_list_assignments_for_a_classroom`]
50#[derive(Debug, Clone, Serialize, Deserialize)]
51#[serde(untagged)]
52pub enum ClassroomSlashListAssignmentsForAClassroomError {
53    UnknownValue(serde_json::Value),
54}
55
56/// struct for typed errors of method [`classroom_slash_list_classrooms`]
57#[derive(Debug, Clone, Serialize, Deserialize)]
58#[serde(untagged)]
59pub enum ClassroomSlashListClassroomsError {
60    UnknownValue(serde_json::Value),
61}
62
63
64/// Gets a GitHub Classroom classroom for the current user. Classroom will only be returned if the current user is an administrator of the GitHub Classroom.
65pub async fn classroom_slash_get_a_classroom(configuration: &configuration::Configuration, classroom_id: i32) -> Result<models::Classroom, Error<ClassroomSlashGetAClassroomError>> {
66    let local_var_configuration = configuration;
67
68    let local_var_client = &local_var_configuration.client;
69
70    let local_var_uri_str = format!("{}/classrooms/{classroom_id}", local_var_configuration.base_path, classroom_id=classroom_id);
71    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
72
73    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
74        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
75    }
76
77    let local_var_req = local_var_req_builder.build()?;
78    let local_var_resp = local_var_client.execute(local_var_req).await?;
79
80    let local_var_status = local_var_resp.status();
81    let local_var_content = local_var_resp.text().await?;
82
83    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
84        serde_json::from_str(&local_var_content).map_err(Error::from)
85    } else {
86        let local_var_entity: Option<ClassroomSlashGetAClassroomError> = serde_json::from_str(&local_var_content).ok();
87        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
88        Err(Error::ResponseError(local_var_error))
89    }
90}
91
92/// Gets a GitHub Classroom assignment. Assignment will only be returned if the current user is an administrator of the GitHub Classroom for the assignment.
93pub async fn classroom_slash_get_an_assignment(configuration: &configuration::Configuration, assignment_id: i32) -> Result<models::ClassroomAssignment, Error<ClassroomSlashGetAnAssignmentError>> {
94    let local_var_configuration = configuration;
95
96    let local_var_client = &local_var_configuration.client;
97
98    let local_var_uri_str = format!("{}/assignments/{assignment_id}", local_var_configuration.base_path, assignment_id=assignment_id);
99    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
100
101    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
102        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
103    }
104
105    let local_var_req = local_var_req_builder.build()?;
106    let local_var_resp = local_var_client.execute(local_var_req).await?;
107
108    let local_var_status = local_var_resp.status();
109    let local_var_content = local_var_resp.text().await?;
110
111    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
112        serde_json::from_str(&local_var_content).map_err(Error::from)
113    } else {
114        let local_var_entity: Option<ClassroomSlashGetAnAssignmentError> = serde_json::from_str(&local_var_content).ok();
115        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
116        Err(Error::ResponseError(local_var_error))
117    }
118}
119
120/// Gets grades for a GitHub Classroom assignment. Grades will only be returned if the current user is an administrator of the GitHub Classroom for the assignment.
121pub async fn classroom_slash_get_assignment_grades(configuration: &configuration::Configuration, assignment_id: i32) -> Result<Vec<models::ClassroomAssignmentGrade>, Error<ClassroomSlashGetAssignmentGradesError>> {
122    let local_var_configuration = configuration;
123
124    let local_var_client = &local_var_configuration.client;
125
126    let local_var_uri_str = format!("{}/assignments/{assignment_id}/grades", local_var_configuration.base_path, assignment_id=assignment_id);
127    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
128
129    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
130        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
131    }
132
133    let local_var_req = local_var_req_builder.build()?;
134    let local_var_resp = local_var_client.execute(local_var_req).await?;
135
136    let local_var_status = local_var_resp.status();
137    let local_var_content = local_var_resp.text().await?;
138
139    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
140        serde_json::from_str(&local_var_content).map_err(Error::from)
141    } else {
142        let local_var_entity: Option<ClassroomSlashGetAssignmentGradesError> = serde_json::from_str(&local_var_content).ok();
143        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
144        Err(Error::ResponseError(local_var_error))
145    }
146}
147
148/// Lists any assignment repositories that have been created by students accepting a GitHub Classroom assignment. Accepted assignments will only be returned if the current user is an administrator of the GitHub Classroom for the assignment.
149pub async fn classroom_slash_list_accepted_assigments_for_an_assignment(configuration: &configuration::Configuration, assignment_id: i32, page: Option<i32>, per_page: Option<i32>) -> Result<Vec<models::ClassroomAcceptedAssignment>, Error<ClassroomSlashListAcceptedAssigmentsForAnAssignmentError>> {
150    let local_var_configuration = configuration;
151
152    let local_var_client = &local_var_configuration.client;
153
154    let local_var_uri_str = format!("{}/assignments/{assignment_id}/accepted_assignments", local_var_configuration.base_path, assignment_id=assignment_id);
155    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
156
157    if let Some(ref local_var_str) = page {
158        local_var_req_builder = local_var_req_builder.query(&[("page", &local_var_str.to_string())]);
159    }
160    if let Some(ref local_var_str) = per_page {
161        local_var_req_builder = local_var_req_builder.query(&[("per_page", &local_var_str.to_string())]);
162    }
163    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
164        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
165    }
166
167    let local_var_req = local_var_req_builder.build()?;
168    let local_var_resp = local_var_client.execute(local_var_req).await?;
169
170    let local_var_status = local_var_resp.status();
171    let local_var_content = local_var_resp.text().await?;
172
173    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
174        serde_json::from_str(&local_var_content).map_err(Error::from)
175    } else {
176        let local_var_entity: Option<ClassroomSlashListAcceptedAssigmentsForAnAssignmentError> = serde_json::from_str(&local_var_content).ok();
177        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
178        Err(Error::ResponseError(local_var_error))
179    }
180}
181
182/// Lists GitHub Classroom assignments for a classroom. Assignments will only be returned if the current user is an administrator of the GitHub Classroom.
183pub async fn classroom_slash_list_assignments_for_a_classroom(configuration: &configuration::Configuration, classroom_id: i32, page: Option<i32>, per_page: Option<i32>) -> Result<Vec<models::SimpleClassroomAssignment>, Error<ClassroomSlashListAssignmentsForAClassroomError>> {
184    let local_var_configuration = configuration;
185
186    let local_var_client = &local_var_configuration.client;
187
188    let local_var_uri_str = format!("{}/classrooms/{classroom_id}/assignments", local_var_configuration.base_path, classroom_id=classroom_id);
189    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
190
191    if let Some(ref local_var_str) = page {
192        local_var_req_builder = local_var_req_builder.query(&[("page", &local_var_str.to_string())]);
193    }
194    if let Some(ref local_var_str) = per_page {
195        local_var_req_builder = local_var_req_builder.query(&[("per_page", &local_var_str.to_string())]);
196    }
197    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
198        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
199    }
200
201    let local_var_req = local_var_req_builder.build()?;
202    let local_var_resp = local_var_client.execute(local_var_req).await?;
203
204    let local_var_status = local_var_resp.status();
205    let local_var_content = local_var_resp.text().await?;
206
207    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
208        serde_json::from_str(&local_var_content).map_err(Error::from)
209    } else {
210        let local_var_entity: Option<ClassroomSlashListAssignmentsForAClassroomError> = serde_json::from_str(&local_var_content).ok();
211        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
212        Err(Error::ResponseError(local_var_error))
213    }
214}
215
216/// Lists GitHub Classroom classrooms for the current user. Classrooms will only be returned if the current user is an administrator of one or more GitHub Classrooms.
217pub async fn classroom_slash_list_classrooms(configuration: &configuration::Configuration, page: Option<i32>, per_page: Option<i32>) -> Result<Vec<models::SimpleClassroom>, Error<ClassroomSlashListClassroomsError>> {
218    let local_var_configuration = configuration;
219
220    let local_var_client = &local_var_configuration.client;
221
222    let local_var_uri_str = format!("{}/classrooms", local_var_configuration.base_path);
223    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
224
225    if let Some(ref local_var_str) = page {
226        local_var_req_builder = local_var_req_builder.query(&[("page", &local_var_str.to_string())]);
227    }
228    if let Some(ref local_var_str) = per_page {
229        local_var_req_builder = local_var_req_builder.query(&[("per_page", &local_var_str.to_string())]);
230    }
231    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
232        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
233    }
234
235    let local_var_req = local_var_req_builder.build()?;
236    let local_var_resp = local_var_client.execute(local_var_req).await?;
237
238    let local_var_status = local_var_resp.status();
239    let local_var_content = local_var_resp.text().await?;
240
241    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
242        serde_json::from_str(&local_var_content).map_err(Error::from)
243    } else {
244        let local_var_entity: Option<ClassroomSlashListClassroomsError> = serde_json::from_str(&local_var_content).ok();
245        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
246        Err(Error::ResponseError(local_var_error))
247    }
248}
249