mattermost_rust_client/apis/
uploads_api.rs

1/*
2 * Mattermost API Reference
3 *
4 * There is also a work-in-progress [Postman API reference](https://documenter.getpostman.com/view/4508214/RW8FERUn). 
5 *
6 * The version of the OpenAPI document: 4.0.0
7 * Contact: feedback@mattermost.com
8 * Generated by: https://openapi-generator.tech
9 */
10
11
12use reqwest;
13
14use crate::apis::ResponseContent;
15use super::{Error, configuration};
16
17
18/// struct for typed errors of method [`create_upload`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum CreateUploadError {
22    Status400(crate::models::AppError),
23    Status401(crate::models::AppError),
24    Status403(crate::models::AppError),
25    Status413(crate::models::AppError),
26    Status501(crate::models::AppError),
27    UnknownValue(serde_json::Value),
28}
29
30/// struct for typed errors of method [`get_upload`]
31#[derive(Debug, Clone, Serialize, Deserialize)]
32#[serde(untagged)]
33pub enum GetUploadError {
34    Status400(crate::models::AppError),
35    Status401(crate::models::AppError),
36    Status403(crate::models::AppError),
37    Status404(crate::models::AppError),
38    Status501(crate::models::AppError),
39    UnknownValue(serde_json::Value),
40}
41
42/// struct for typed errors of method [`upload_data`]
43#[derive(Debug, Clone, Serialize, Deserialize)]
44#[serde(untagged)]
45pub enum UploadDataError {
46    Status400(crate::models::AppError),
47    Status401(crate::models::AppError),
48    Status403(crate::models::AppError),
49    Status413(crate::models::AppError),
50    Status501(crate::models::AppError),
51    UnknownValue(serde_json::Value),
52}
53
54
55/// Creates a new upload session.  __Minimum server version__: 5.28 ##### Permissions Must have `upload_file` permission. 
56pub async fn create_upload(configuration: &configuration::Configuration, create_upload_request: crate::models::CreateUploadRequest) -> Result<crate::models::UploadSession, Error<CreateUploadError>> {
57    let local_var_configuration = configuration;
58
59    let local_var_client = &local_var_configuration.client;
60
61    let local_var_uri_str = format!("{}/uploads", local_var_configuration.base_path);
62    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
63
64    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
65        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
66    }
67    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
68        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
69    };
70    local_var_req_builder = local_var_req_builder.json(&create_upload_request);
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<CreateUploadError> = serde_json::from_str(&local_var_content).ok();
82        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
83        Err(Error::ResponseError(local_var_error))
84    }
85}
86
87/// Gets an upload session that has been previously created.  ##### Permissions Must be logged in as the user who created the upload session. 
88pub async fn get_upload(configuration: &configuration::Configuration, upload_id: &str) -> Result<(), Error<GetUploadError>> {
89    let local_var_configuration = configuration;
90
91    let local_var_client = &local_var_configuration.client;
92
93    let local_var_uri_str = format!("{}/uploads/{upload_id}", local_var_configuration.base_path, upload_id=crate::apis::urlencode(upload_id));
94    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
95
96    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
97        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
98    }
99    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
100        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
101    };
102
103    let local_var_req = local_var_req_builder.build()?;
104    let local_var_resp = local_var_client.execute(local_var_req).await?;
105
106    let local_var_status = local_var_resp.status();
107    let local_var_content = local_var_resp.text().await?;
108
109    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
110        Ok(())
111    } else {
112        let local_var_entity: Option<GetUploadError> = serde_json::from_str(&local_var_content).ok();
113        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
114        Err(Error::ResponseError(local_var_error))
115    }
116}
117
118/// Starts or resumes a file upload.   To resume an existing (incomplete) upload, data should be sent starting from the offset specified in the upload session object.  The request body can be in one of two formats: - Binary file content streamed in request's body - multipart/form-data  ##### Permissions Must be logged in as the user who created the upload session. 
119pub async fn upload_data(configuration: &configuration::Configuration, upload_id: &str) -> Result<crate::models::FileInfo, Error<UploadDataError>> {
120    let local_var_configuration = configuration;
121
122    let local_var_client = &local_var_configuration.client;
123
124    let local_var_uri_str = format!("{}/uploads/{upload_id}", local_var_configuration.base_path, upload_id=crate::apis::urlencode(upload_id));
125    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
126
127    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
128        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
129    }
130    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
131        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
132    };
133
134    let local_var_req = local_var_req_builder.build()?;
135    let local_var_resp = local_var_client.execute(local_var_req).await?;
136
137    let local_var_status = local_var_resp.status();
138    let local_var_content = local_var_resp.text().await?;
139
140    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
141        serde_json::from_str(&local_var_content).map_err(Error::from)
142    } else {
143        let local_var_entity: Option<UploadDataError> = serde_json::from_str(&local_var_content).ok();
144        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
145        Err(Error::ResponseError(local_var_error))
146    }
147}
148