Skip to main content

clientapi_pbs/apis/
tape_changer_api.rs

1/*
2 * Proxmox Backup Server API
3 *
4 * Generated from apidoc.js. NOT an official Proxmox specification. See https://pbs.proxmox.com/docs/api-viewer/ for the upstream documentation.
5 *
6 * The version of the OpenAPI document: 9.x
7 * 
8 * Generated by: https://openapi-generator.tech
9 */
10
11
12use reqwest;
13use serde::{Deserialize, Serialize, de::Error as _};
14use crate::{apis::ResponseContent, models};
15use super::{Error, configuration, ContentType};
16
17
18/// struct for typed errors of method [`tape_changer_create_transfer`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum TapeChangerCreateTransferError {
22    Status400(models::PbsError),
23    Status401(models::PbsError),
24    Status403(models::PbsError),
25    Status404(models::PbsError),
26    Status500(models::PbsError),
27    Status501(models::PbsError),
28    Status503(models::PbsError),
29    UnknownValue(serde_json::Value),
30}
31
32/// struct for typed errors of method [`tape_changer_get_changer`]
33#[derive(Debug, Clone, Serialize, Deserialize)]
34#[serde(untagged)]
35pub enum TapeChangerGetChangerError {
36    Status400(models::PbsError),
37    Status401(models::PbsError),
38    Status403(models::PbsError),
39    Status404(models::PbsError),
40    Status500(models::PbsError),
41    Status501(models::PbsError),
42    Status503(models::PbsError),
43    UnknownValue(serde_json::Value),
44}
45
46/// struct for typed errors of method [`tape_changer_get_status`]
47#[derive(Debug, Clone, Serialize, Deserialize)]
48#[serde(untagged)]
49pub enum TapeChangerGetStatusError {
50    Status400(models::PbsError),
51    Status401(models::PbsError),
52    Status403(models::PbsError),
53    Status404(models::PbsError),
54    Status500(models::PbsError),
55    Status501(models::PbsError),
56    Status503(models::PbsError),
57    UnknownValue(serde_json::Value),
58}
59
60/// struct for typed errors of method [`tape_changer_get_tape_changer_by_name`]
61#[derive(Debug, Clone, Serialize, Deserialize)]
62#[serde(untagged)]
63pub enum TapeChangerGetTapeChangerByNameError {
64    Status400(models::PbsError),
65    Status401(models::PbsError),
66    Status403(models::PbsError),
67    Status404(models::PbsError),
68    Status500(models::PbsError),
69    Status501(models::PbsError),
70    Status503(models::PbsError),
71    UnknownValue(serde_json::Value),
72}
73
74
75/// Transfers media from one slot to another
76pub async fn tape_changer_create_transfer(configuration: &configuration::Configuration, name: &str, tape_changer_create_transfer_request: models::TapeChangerCreateTransferRequest) -> Result<models::TapeChangerCreateTransferResponse, Error<TapeChangerCreateTransferError>> {
77    // add a prefix to parameters to efficiently prevent name collisions
78    let p_path_name = name;
79    let p_body_tape_changer_create_transfer_request = tape_changer_create_transfer_request;
80
81    let uri_str = format!("{}/tape/changer/{name}/transfer", configuration.base_path, name=crate::apis::urlencode(p_path_name));
82    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
83
84    if let Some(ref user_agent) = configuration.user_agent {
85        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
86    }
87    if let Some(ref apikey) = configuration.api_key {
88        let key = apikey.key.clone();
89        let value = match apikey.prefix {
90            Some(ref prefix) => format!("{} {}", prefix, key),
91            None => key,
92        };
93        req_builder = req_builder.header("Authorization", value);
94    };
95    if let Some(ref apikey) = configuration.api_key {
96        let key = apikey.key.clone();
97        let value = match apikey.prefix {
98            Some(ref prefix) => format!("{} {}", prefix, key),
99            None => key,
100        };
101        req_builder = req_builder.header("CSRFPreventionToken", value);
102    };
103    req_builder = req_builder.json(&p_body_tape_changer_create_transfer_request);
104
105    let req = req_builder.build()?;
106    let resp = configuration.client.execute(req).await?;
107
108    let status = resp.status();
109    let content_type = resp
110        .headers()
111        .get("content-type")
112        .and_then(|v| v.to_str().ok())
113        .unwrap_or("application/octet-stream");
114    let content_type = super::ContentType::from(content_type);
115
116    if !status.is_client_error() && !status.is_server_error() {
117        let content = resp.text().await?;
118        match content_type {
119            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
120            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::TapeChangerCreateTransferResponse`"))),
121            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::TapeChangerCreateTransferResponse`")))),
122        }
123    } else {
124        let content = resp.text().await?;
125        let entity: Option<TapeChangerCreateTransferError> = serde_json::from_str(&content).ok();
126        Err(Error::ResponseError(ResponseContent { status, content, entity }))
127    }
128}
129
130/// List changers  Permissions: List configured tape changer filtered by Tape.Audit privileges
131pub async fn tape_changer_get_changer(configuration: &configuration::Configuration, ) -> Result<models::TapeChangerGetChangerResponse, Error<TapeChangerGetChangerError>> {
132
133    let uri_str = format!("{}/tape/changer", configuration.base_path);
134    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
135
136    if let Some(ref user_agent) = configuration.user_agent {
137        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
138    }
139    if let Some(ref apikey) = configuration.api_key {
140        let key = apikey.key.clone();
141        let value = match apikey.prefix {
142            Some(ref prefix) => format!("{} {}", prefix, key),
143            None => key,
144        };
145        req_builder = req_builder.header("Authorization", value);
146    };
147    if let Some(ref apikey) = configuration.api_key {
148        let key = apikey.key.clone();
149        let value = match apikey.prefix {
150            Some(ref prefix) => format!("{} {}", prefix, key),
151            None => key,
152        };
153        req_builder = req_builder.header("CSRFPreventionToken", value);
154    };
155
156    let req = req_builder.build()?;
157    let resp = configuration.client.execute(req).await?;
158
159    let status = resp.status();
160    let content_type = resp
161        .headers()
162        .get("content-type")
163        .and_then(|v| v.to_str().ok())
164        .unwrap_or("application/octet-stream");
165    let content_type = super::ContentType::from(content_type);
166
167    if !status.is_client_error() && !status.is_server_error() {
168        let content = resp.text().await?;
169        match content_type {
170            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
171            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::TapeChangerGetChangerResponse`"))),
172            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::TapeChangerGetChangerResponse`")))),
173        }
174    } else {
175        let content = resp.text().await?;
176        let entity: Option<TapeChangerGetChangerError> = serde_json::from_str(&content).ok();
177        Err(Error::ResponseError(ResponseContent { status, content, entity }))
178    }
179}
180
181/// Get tape changer status
182pub async fn tape_changer_get_status(configuration: &configuration::Configuration, name: &str, cache: Option<bool>) -> Result<models::TapeChangerGetStatusResponse, Error<TapeChangerGetStatusError>> {
183    // add a prefix to parameters to efficiently prevent name collisions
184    let p_path_name = name;
185    let p_query_cache = cache;
186
187    let uri_str = format!("{}/tape/changer/{name}/status", configuration.base_path, name=crate::apis::urlencode(p_path_name));
188    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
189
190    if let Some(ref param_value) = p_query_cache {
191        req_builder = req_builder.query(&[("cache", &param_value.to_string())]);
192    }
193    if let Some(ref user_agent) = configuration.user_agent {
194        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
195    }
196    if let Some(ref apikey) = configuration.api_key {
197        let key = apikey.key.clone();
198        let value = match apikey.prefix {
199            Some(ref prefix) => format!("{} {}", prefix, key),
200            None => key,
201        };
202        req_builder = req_builder.header("Authorization", value);
203    };
204    if let Some(ref apikey) = configuration.api_key {
205        let key = apikey.key.clone();
206        let value = match apikey.prefix {
207            Some(ref prefix) => format!("{} {}", prefix, key),
208            None => key,
209        };
210        req_builder = req_builder.header("CSRFPreventionToken", value);
211    };
212
213    let req = req_builder.build()?;
214    let resp = configuration.client.execute(req).await?;
215
216    let status = resp.status();
217    let content_type = resp
218        .headers()
219        .get("content-type")
220        .and_then(|v| v.to_str().ok())
221        .unwrap_or("application/octet-stream");
222    let content_type = super::ContentType::from(content_type);
223
224    if !status.is_client_error() && !status.is_server_error() {
225        let content = resp.text().await?;
226        match content_type {
227            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
228            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::TapeChangerGetStatusResponse`"))),
229            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::TapeChangerGetStatusResponse`")))),
230        }
231    } else {
232        let content = resp.text().await?;
233        let entity: Option<TapeChangerGetStatusError> = serde_json::from_str(&content).ok();
234        Err(Error::ResponseError(ResponseContent { status, content, entity }))
235    }
236}
237
238/// Directory index.
239pub async fn tape_changer_get_tape_changer_by_name(configuration: &configuration::Configuration, name: &str) -> Result<models::TapeChangerGetTapeChangerByNameResponse, Error<TapeChangerGetTapeChangerByNameError>> {
240    // add a prefix to parameters to efficiently prevent name collisions
241    let p_path_name = name;
242
243    let uri_str = format!("{}/tape/changer/{name}", configuration.base_path, name=crate::apis::urlencode(p_path_name));
244    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
245
246    if let Some(ref user_agent) = configuration.user_agent {
247        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
248    }
249    if let Some(ref apikey) = configuration.api_key {
250        let key = apikey.key.clone();
251        let value = match apikey.prefix {
252            Some(ref prefix) => format!("{} {}", prefix, key),
253            None => key,
254        };
255        req_builder = req_builder.header("Authorization", value);
256    };
257    if let Some(ref apikey) = configuration.api_key {
258        let key = apikey.key.clone();
259        let value = match apikey.prefix {
260            Some(ref prefix) => format!("{} {}", prefix, key),
261            None => key,
262        };
263        req_builder = req_builder.header("CSRFPreventionToken", value);
264    };
265
266    let req = req_builder.build()?;
267    let resp = configuration.client.execute(req).await?;
268
269    let status = resp.status();
270    let content_type = resp
271        .headers()
272        .get("content-type")
273        .and_then(|v| v.to_str().ok())
274        .unwrap_or("application/octet-stream");
275    let content_type = super::ContentType::from(content_type);
276
277    if !status.is_client_error() && !status.is_server_error() {
278        let content = resp.text().await?;
279        match content_type {
280            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
281            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::TapeChangerGetTapeChangerByNameResponse`"))),
282            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::TapeChangerGetTapeChangerByNameResponse`")))),
283        }
284    } else {
285        let content = resp.text().await?;
286        let entity: Option<TapeChangerGetTapeChangerByNameError> = serde_json::from_str(&content).ok();
287        Err(Error::ResponseError(ResponseContent { status, content, entity }))
288    }
289}
290