firefly_iii/apis/
attachments_api.rs

1/*
2 * Firefly III API
3 *
4 * This is the official documentation of the Firefly III API. You can find accompanying documentation on the website of Firefly III itself (see below). Please report any bugs or issues. This version of the API is live from version v4.7.9 and onwards. You may use the \"Authorize\" button to try the API below. 
5 *
6 * The version of the OpenAPI document: 1.4.0
7 * Contact: james@firefly-iii.org
8 * Generated by: https://openapi-generator.tech
9 */
10
11use async_trait::async_trait;
12use std::sync::Arc;
13use std::borrow::Borrow;
14#[allow(unused_imports)]
15use std::option::Option;
16
17use reqwest;
18
19use super::{Error, configuration};
20
21pub struct AttachmentsApiClient {
22    configuration: Arc<configuration::Configuration>,
23}
24
25impl AttachmentsApiClient {
26    pub fn new(configuration: Arc<configuration::Configuration>) -> AttachmentsApiClient {
27        AttachmentsApiClient {
28            configuration,
29        }
30    }
31}
32
33#[async_trait]
34pub trait AttachmentsApi {
35    async fn delete_attachment(&self, id: i32) -> Result<(), Error>;
36    async fn download_attachment(&self, id: i32) -> Result<std::path::PathBuf, Error>;
37    async fn get_attachment(&self, id: i32) -> Result<crate::models::AttachmentSingle, Error>;
38    async fn list_attachment(&self, page: Option<i32>) -> Result<crate::models::AttachmentArray, Error>;
39    async fn store_attachment(&self, attachment: crate::models::Attachment) -> Result<crate::models::AttachmentSingle, Error>;
40    async fn update_attachment(&self, id: i32, attachment: crate::models::Attachment) -> Result<crate::models::AttachmentSingle, Error>;
41    async fn upload_attachment(&self, id: i32, body: Option<std::path::PathBuf>) -> Result<(), Error>;
42}
43
44#[async_trait]
45impl AttachmentsApi for AttachmentsApiClient {
46    async fn delete_attachment(&self, id: i32) -> Result<(), Error> {
47        let configuration: &configuration::Configuration = self.configuration.borrow();
48        let client = &configuration.client;
49
50        let uri_str = format!("{}/api/v1/attachments/{id}", configuration.base_path, id=id);
51        let mut req_builder = client.request(::reqwest::Method::DELETE, uri_str.as_str());
52
53        if let Some(ref user_agent) = configuration.user_agent {
54            req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
55        }
56        if let Some(ref token) = configuration.oauth_access_token {
57            req_builder = req_builder.bearer_auth(token.to_owned());
58        };
59
60        // send request
61        let req = req_builder.build()?;
62
63        client.execute(req).await?.error_for_status()?;
64        Ok(())
65    }
66
67    async fn download_attachment(&self, id: i32) -> Result<std::path::PathBuf, Error> {
68        let configuration: &configuration::Configuration = self.configuration.borrow();
69        let client = &configuration.client;
70
71        let uri_str = format!("{}/api/v1/attachments/{id}/download", configuration.base_path, id=id);
72        let mut req_builder = client.request(::reqwest::Method::GET, uri_str.as_str());
73
74        if let Some(ref user_agent) = configuration.user_agent {
75            req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
76        }
77        if let Some(ref token) = configuration.oauth_access_token {
78            req_builder = req_builder.bearer_auth(token.to_owned());
79        };
80
81        // ensure returntype is json (only supported returntype)
82        req_builder = req_builder.header(reqwest::header::ACCEPT, "application/json");
83
84        // send request
85        let req = req_builder.build()?;
86
87        Ok(client.execute(req).await?.error_for_status()?.json().await?)
88    }
89
90    async fn get_attachment(&self, id: i32) -> Result<crate::models::AttachmentSingle, Error> {
91        let configuration: &configuration::Configuration = self.configuration.borrow();
92        let client = &configuration.client;
93
94        let uri_str = format!("{}/api/v1/attachments/{id}", configuration.base_path, id=id);
95        let mut req_builder = client.request(::reqwest::Method::GET, uri_str.as_str());
96
97        if let Some(ref user_agent) = configuration.user_agent {
98            req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
99        }
100        if let Some(ref token) = configuration.oauth_access_token {
101            req_builder = req_builder.bearer_auth(token.to_owned());
102        };
103
104        // ensure returntype is json (only supported returntype)
105        req_builder = req_builder.header(reqwest::header::ACCEPT, "application/json");
106
107        // send request
108        let req = req_builder.build()?;
109
110        Ok(client.execute(req).await?.error_for_status()?.json().await?)
111    }
112
113    async fn list_attachment(&self, page: Option<i32>) -> Result<crate::models::AttachmentArray, Error> {
114        let configuration: &configuration::Configuration = self.configuration.borrow();
115        let client = &configuration.client;
116
117        let uri_str = format!("{}/api/v1/attachments", configuration.base_path);
118        let mut req_builder = client.request(::reqwest::Method::GET, uri_str.as_str());
119
120        if let Some(ref s) = page {
121            req_builder = req_builder.query(&[("page", &s.to_string())]);
122        }
123        if let Some(ref user_agent) = configuration.user_agent {
124            req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
125        }
126        if let Some(ref token) = configuration.oauth_access_token {
127            req_builder = req_builder.bearer_auth(token.to_owned());
128        };
129
130        // ensure returntype is json (only supported returntype)
131        req_builder = req_builder.header(reqwest::header::ACCEPT, "application/json");
132
133        // send request
134        let req = req_builder.build()?;
135
136        Ok(client.execute(req).await?.error_for_status()?.json().await?)
137    }
138
139    async fn store_attachment(&self, attachment: crate::models::Attachment) -> Result<crate::models::AttachmentSingle, Error> {
140        let configuration: &configuration::Configuration = self.configuration.borrow();
141        let client = &configuration.client;
142
143        let uri_str = format!("{}/api/v1/attachments", configuration.base_path);
144        let mut req_builder = client.request(::reqwest::Method::POST, uri_str.as_str());
145
146        if let Some(ref user_agent) = configuration.user_agent {
147            req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
148        }
149        if let Some(ref token) = configuration.oauth_access_token {
150            req_builder = req_builder.bearer_auth(token.to_owned());
151        };
152        req_builder = req_builder.json(&attachment);
153
154        // ensure returntype is json (only supported returntype)
155        req_builder = req_builder.header(reqwest::header::ACCEPT, "application/json");
156
157        // send request
158        let req = req_builder.build()?;
159
160        Ok(client.execute(req).await?.error_for_status()?.json().await?)
161    }
162
163    async fn update_attachment(&self, id: i32, attachment: crate::models::Attachment) -> Result<crate::models::AttachmentSingle, Error> {
164        let configuration: &configuration::Configuration = self.configuration.borrow();
165        let client = &configuration.client;
166
167        let uri_str = format!("{}/api/v1/attachments/{id}", configuration.base_path, id=id);
168        let mut req_builder = client.request(::reqwest::Method::PUT, uri_str.as_str());
169
170        if let Some(ref user_agent) = configuration.user_agent {
171            req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
172        }
173        if let Some(ref token) = configuration.oauth_access_token {
174            req_builder = req_builder.bearer_auth(token.to_owned());
175        };
176        req_builder = req_builder.json(&attachment);
177
178        // ensure returntype is json (only supported returntype)
179        req_builder = req_builder.header(reqwest::header::ACCEPT, "application/json");
180
181        // send request
182        let req = req_builder.build()?;
183
184        Ok(client.execute(req).await?.error_for_status()?.json().await?)
185    }
186
187    async fn upload_attachment(&self, id: i32, body: Option<std::path::PathBuf>) -> Result<(), Error> {
188        let configuration: &configuration::Configuration = self.configuration.borrow();
189        let client = &configuration.client;
190
191        let uri_str = format!("{}/api/v1/attachments/{id}/upload", configuration.base_path, id=id);
192        let mut req_builder = client.request(::reqwest::Method::POST, uri_str.as_str());
193
194        if let Some(ref user_agent) = configuration.user_agent {
195            req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
196        }
197        if let Some(ref token) = configuration.oauth_access_token {
198            req_builder = req_builder.bearer_auth(token.to_owned());
199        };
200        req_builder = req_builder.json(&body);
201
202        // send request
203        let req = req_builder.build()?;
204
205        client.execute(req).await?.error_for_status()?;
206        Ok(())
207    }
208
209}