Skip to main content

gitea_client/apis/
package_api.rs

1/*
2 * Gitea API
3 *
4 * This documentation describes the Gitea API.
5 *
6 * The version of the OpenAPI document: 1.25.2
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 [`delete_package`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum DeletePackageError {
22    Status404(),
23    UnknownValue(serde_json::Value),
24}
25
26/// struct for typed errors of method [`get_latest_package_version`]
27#[derive(Debug, Clone, Serialize, Deserialize)]
28#[serde(untagged)]
29pub enum GetLatestPackageVersionError {
30    Status404(),
31    UnknownValue(serde_json::Value),
32}
33
34/// struct for typed errors of method [`get_package`]
35#[derive(Debug, Clone, Serialize, Deserialize)]
36#[serde(untagged)]
37pub enum GetPackageError {
38    Status404(),
39    UnknownValue(serde_json::Value),
40}
41
42/// struct for typed errors of method [`link_package`]
43#[derive(Debug, Clone, Serialize, Deserialize)]
44#[serde(untagged)]
45pub enum LinkPackageError {
46    Status404(),
47    UnknownValue(serde_json::Value),
48}
49
50/// struct for typed errors of method [`list_package_files`]
51#[derive(Debug, Clone, Serialize, Deserialize)]
52#[serde(untagged)]
53pub enum ListPackageFilesError {
54    Status404(),
55    UnknownValue(serde_json::Value),
56}
57
58/// struct for typed errors of method [`list_package_versions`]
59#[derive(Debug, Clone, Serialize, Deserialize)]
60#[serde(untagged)]
61pub enum ListPackageVersionsError {
62    Status404(),
63    UnknownValue(serde_json::Value),
64}
65
66/// struct for typed errors of method [`list_packages`]
67#[derive(Debug, Clone, Serialize, Deserialize)]
68#[serde(untagged)]
69pub enum ListPackagesError {
70    Status404(),
71    UnknownValue(serde_json::Value),
72}
73
74/// struct for typed errors of method [`unlink_package`]
75#[derive(Debug, Clone, Serialize, Deserialize)]
76#[serde(untagged)]
77pub enum UnlinkPackageError {
78    Status404(),
79    UnknownValue(serde_json::Value),
80}
81
82
83pub async fn delete_package(configuration: &configuration::Configuration, owner: &str, r#type: &str, name: &str, version: &str) -> Result<(), Error<DeletePackageError>> {
84    // add a prefix to parameters to efficiently prevent name collisions
85    let p_path_owner = owner;
86    let p_path_type = r#type;
87    let p_path_name = name;
88    let p_path_version = version;
89
90    let uri_str = format!("{}/packages/{owner}/{type}/{name}/{version}", configuration.base_path, owner=crate::apis::urlencode(p_path_owner), type=crate::apis::urlencode(p_path_type), name=crate::apis::urlencode(p_path_name), version=crate::apis::urlencode(p_path_version));
91    let mut req_builder = configuration.client.request(reqwest::Method::DELETE, &uri_str);
92
93    if let Some(ref apikey) = configuration.api_key {
94        let key = apikey.key.clone();
95        let value = match apikey.prefix {
96            Some(ref prefix) => format!("{} {}", prefix, key),
97            None => key,
98        };
99        req_builder = req_builder.query(&[("access_token", value)]);
100    }
101    if let Some(ref apikey) = configuration.api_key {
102        let key = apikey.key.clone();
103        let value = match apikey.prefix {
104            Some(ref prefix) => format!("{} {}", prefix, key),
105            None => key,
106        };
107        req_builder = req_builder.query(&[("sudo", value)]);
108    }
109    if let Some(ref apikey) = configuration.api_key {
110        let key = apikey.key.clone();
111        let value = match apikey.prefix {
112            Some(ref prefix) => format!("{} {}", prefix, key),
113            None => key,
114        };
115        req_builder = req_builder.query(&[("token", value)]);
116    }
117    if let Some(ref user_agent) = configuration.user_agent {
118        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
119    }
120    if let Some(ref apikey) = configuration.api_key {
121        let key = apikey.key.clone();
122        let value = match apikey.prefix {
123            Some(ref prefix) => format!("{} {}", prefix, key),
124            None => key,
125        };
126        req_builder = req_builder.header("X-GITEA-OTP", value);
127    };
128    if let Some(ref apikey) = configuration.api_key {
129        let key = apikey.key.clone();
130        let value = match apikey.prefix {
131            Some(ref prefix) => format!("{} {}", prefix, key),
132            None => key,
133        };
134        req_builder = req_builder.header("Authorization", value);
135    };
136    if let Some(ref apikey) = configuration.api_key {
137        let key = apikey.key.clone();
138        let value = match apikey.prefix {
139            Some(ref prefix) => format!("{} {}", prefix, key),
140            None => key,
141        };
142        req_builder = req_builder.header("Sudo", value);
143    };
144    if let Some(ref auth_conf) = configuration.basic_auth {
145        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
146    };
147
148    let req = req_builder.build()?;
149    let resp = configuration.client.execute(req).await?;
150
151    let status = resp.status();
152
153    if !status.is_client_error() && !status.is_server_error() {
154        Ok(())
155    } else {
156        let content = resp.text().await?;
157        let entity: Option<DeletePackageError> = serde_json::from_str(&content).ok();
158        Err(Error::ResponseError(ResponseContent { status, content, entity }))
159    }
160}
161
162pub async fn get_latest_package_version(configuration: &configuration::Configuration, owner: &str, r#type: &str, name: &str) -> Result<models::Package, Error<GetLatestPackageVersionError>> {
163    // add a prefix to parameters to efficiently prevent name collisions
164    let p_path_owner = owner;
165    let p_path_type = r#type;
166    let p_path_name = name;
167
168    let uri_str = format!("{}/packages/{owner}/{type}/{name}/-/latest", configuration.base_path, owner=crate::apis::urlencode(p_path_owner), type=crate::apis::urlencode(p_path_type), name=crate::apis::urlencode(p_path_name));
169    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
170
171    if let Some(ref apikey) = configuration.api_key {
172        let key = apikey.key.clone();
173        let value = match apikey.prefix {
174            Some(ref prefix) => format!("{} {}", prefix, key),
175            None => key,
176        };
177        req_builder = req_builder.query(&[("access_token", value)]);
178    }
179    if let Some(ref apikey) = configuration.api_key {
180        let key = apikey.key.clone();
181        let value = match apikey.prefix {
182            Some(ref prefix) => format!("{} {}", prefix, key),
183            None => key,
184        };
185        req_builder = req_builder.query(&[("sudo", value)]);
186    }
187    if let Some(ref apikey) = configuration.api_key {
188        let key = apikey.key.clone();
189        let value = match apikey.prefix {
190            Some(ref prefix) => format!("{} {}", prefix, key),
191            None => key,
192        };
193        req_builder = req_builder.query(&[("token", value)]);
194    }
195    if let Some(ref user_agent) = configuration.user_agent {
196        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
197    }
198    if let Some(ref apikey) = configuration.api_key {
199        let key = apikey.key.clone();
200        let value = match apikey.prefix {
201            Some(ref prefix) => format!("{} {}", prefix, key),
202            None => key,
203        };
204        req_builder = req_builder.header("X-GITEA-OTP", value);
205    };
206    if let Some(ref apikey) = configuration.api_key {
207        let key = apikey.key.clone();
208        let value = match apikey.prefix {
209            Some(ref prefix) => format!("{} {}", prefix, key),
210            None => key,
211        };
212        req_builder = req_builder.header("Authorization", value);
213    };
214    if let Some(ref apikey) = configuration.api_key {
215        let key = apikey.key.clone();
216        let value = match apikey.prefix {
217            Some(ref prefix) => format!("{} {}", prefix, key),
218            None => key,
219        };
220        req_builder = req_builder.header("Sudo", value);
221    };
222    if let Some(ref auth_conf) = configuration.basic_auth {
223        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
224    };
225
226    let req = req_builder.build()?;
227    let resp = configuration.client.execute(req).await?;
228
229    let status = resp.status();
230    let content_type = resp
231        .headers()
232        .get("content-type")
233        .and_then(|v| v.to_str().ok())
234        .unwrap_or("application/octet-stream");
235    let content_type = super::ContentType::from(content_type);
236
237    if !status.is_client_error() && !status.is_server_error() {
238        let content = resp.text().await?;
239        match content_type {
240            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
241            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::Package`"))),
242            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::Package`")))),
243        }
244    } else {
245        let content = resp.text().await?;
246        let entity: Option<GetLatestPackageVersionError> = serde_json::from_str(&content).ok();
247        Err(Error::ResponseError(ResponseContent { status, content, entity }))
248    }
249}
250
251pub async fn get_package(configuration: &configuration::Configuration, owner: &str, r#type: &str, name: &str, version: &str) -> Result<models::Package, Error<GetPackageError>> {
252    // add a prefix to parameters to efficiently prevent name collisions
253    let p_path_owner = owner;
254    let p_path_type = r#type;
255    let p_path_name = name;
256    let p_path_version = version;
257
258    let uri_str = format!("{}/packages/{owner}/{type}/{name}/{version}", configuration.base_path, owner=crate::apis::urlencode(p_path_owner), type=crate::apis::urlencode(p_path_type), name=crate::apis::urlencode(p_path_name), version=crate::apis::urlencode(p_path_version));
259    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
260
261    if let Some(ref apikey) = configuration.api_key {
262        let key = apikey.key.clone();
263        let value = match apikey.prefix {
264            Some(ref prefix) => format!("{} {}", prefix, key),
265            None => key,
266        };
267        req_builder = req_builder.query(&[("access_token", value)]);
268    }
269    if let Some(ref apikey) = configuration.api_key {
270        let key = apikey.key.clone();
271        let value = match apikey.prefix {
272            Some(ref prefix) => format!("{} {}", prefix, key),
273            None => key,
274        };
275        req_builder = req_builder.query(&[("sudo", value)]);
276    }
277    if let Some(ref apikey) = configuration.api_key {
278        let key = apikey.key.clone();
279        let value = match apikey.prefix {
280            Some(ref prefix) => format!("{} {}", prefix, key),
281            None => key,
282        };
283        req_builder = req_builder.query(&[("token", value)]);
284    }
285    if let Some(ref user_agent) = configuration.user_agent {
286        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
287    }
288    if let Some(ref apikey) = configuration.api_key {
289        let key = apikey.key.clone();
290        let value = match apikey.prefix {
291            Some(ref prefix) => format!("{} {}", prefix, key),
292            None => key,
293        };
294        req_builder = req_builder.header("X-GITEA-OTP", value);
295    };
296    if let Some(ref apikey) = configuration.api_key {
297        let key = apikey.key.clone();
298        let value = match apikey.prefix {
299            Some(ref prefix) => format!("{} {}", prefix, key),
300            None => key,
301        };
302        req_builder = req_builder.header("Authorization", value);
303    };
304    if let Some(ref apikey) = configuration.api_key {
305        let key = apikey.key.clone();
306        let value = match apikey.prefix {
307            Some(ref prefix) => format!("{} {}", prefix, key),
308            None => key,
309        };
310        req_builder = req_builder.header("Sudo", value);
311    };
312    if let Some(ref auth_conf) = configuration.basic_auth {
313        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
314    };
315
316    let req = req_builder.build()?;
317    let resp = configuration.client.execute(req).await?;
318
319    let status = resp.status();
320    let content_type = resp
321        .headers()
322        .get("content-type")
323        .and_then(|v| v.to_str().ok())
324        .unwrap_or("application/octet-stream");
325    let content_type = super::ContentType::from(content_type);
326
327    if !status.is_client_error() && !status.is_server_error() {
328        let content = resp.text().await?;
329        match content_type {
330            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
331            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::Package`"))),
332            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::Package`")))),
333        }
334    } else {
335        let content = resp.text().await?;
336        let entity: Option<GetPackageError> = serde_json::from_str(&content).ok();
337        Err(Error::ResponseError(ResponseContent { status, content, entity }))
338    }
339}
340
341pub async fn link_package(configuration: &configuration::Configuration, owner: &str, r#type: &str, name: &str, repo_name: &str) -> Result<(), Error<LinkPackageError>> {
342    // add a prefix to parameters to efficiently prevent name collisions
343    let p_path_owner = owner;
344    let p_path_type = r#type;
345    let p_path_name = name;
346    let p_path_repo_name = repo_name;
347
348    let uri_str = format!("{}/packages/{owner}/{type}/{name}/-/link/{repo_name}", configuration.base_path, owner=crate::apis::urlencode(p_path_owner), type=crate::apis::urlencode(p_path_type), name=crate::apis::urlencode(p_path_name), repo_name=crate::apis::urlencode(p_path_repo_name));
349    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
350
351    if let Some(ref apikey) = configuration.api_key {
352        let key = apikey.key.clone();
353        let value = match apikey.prefix {
354            Some(ref prefix) => format!("{} {}", prefix, key),
355            None => key,
356        };
357        req_builder = req_builder.query(&[("access_token", value)]);
358    }
359    if let Some(ref apikey) = configuration.api_key {
360        let key = apikey.key.clone();
361        let value = match apikey.prefix {
362            Some(ref prefix) => format!("{} {}", prefix, key),
363            None => key,
364        };
365        req_builder = req_builder.query(&[("sudo", value)]);
366    }
367    if let Some(ref apikey) = configuration.api_key {
368        let key = apikey.key.clone();
369        let value = match apikey.prefix {
370            Some(ref prefix) => format!("{} {}", prefix, key),
371            None => key,
372        };
373        req_builder = req_builder.query(&[("token", value)]);
374    }
375    if let Some(ref user_agent) = configuration.user_agent {
376        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
377    }
378    if let Some(ref apikey) = configuration.api_key {
379        let key = apikey.key.clone();
380        let value = match apikey.prefix {
381            Some(ref prefix) => format!("{} {}", prefix, key),
382            None => key,
383        };
384        req_builder = req_builder.header("X-GITEA-OTP", value);
385    };
386    if let Some(ref apikey) = configuration.api_key {
387        let key = apikey.key.clone();
388        let value = match apikey.prefix {
389            Some(ref prefix) => format!("{} {}", prefix, key),
390            None => key,
391        };
392        req_builder = req_builder.header("Authorization", value);
393    };
394    if let Some(ref apikey) = configuration.api_key {
395        let key = apikey.key.clone();
396        let value = match apikey.prefix {
397            Some(ref prefix) => format!("{} {}", prefix, key),
398            None => key,
399        };
400        req_builder = req_builder.header("Sudo", value);
401    };
402    if let Some(ref auth_conf) = configuration.basic_auth {
403        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
404    };
405
406    let req = req_builder.build()?;
407    let resp = configuration.client.execute(req).await?;
408
409    let status = resp.status();
410
411    if !status.is_client_error() && !status.is_server_error() {
412        Ok(())
413    } else {
414        let content = resp.text().await?;
415        let entity: Option<LinkPackageError> = serde_json::from_str(&content).ok();
416        Err(Error::ResponseError(ResponseContent { status, content, entity }))
417    }
418}
419
420pub async fn list_package_files(configuration: &configuration::Configuration, owner: &str, r#type: &str, name: &str, version: &str) -> Result<Vec<models::PackageFile>, Error<ListPackageFilesError>> {
421    // add a prefix to parameters to efficiently prevent name collisions
422    let p_path_owner = owner;
423    let p_path_type = r#type;
424    let p_path_name = name;
425    let p_path_version = version;
426
427    let uri_str = format!("{}/packages/{owner}/{type}/{name}/{version}/files", configuration.base_path, owner=crate::apis::urlencode(p_path_owner), type=crate::apis::urlencode(p_path_type), name=crate::apis::urlencode(p_path_name), version=crate::apis::urlencode(p_path_version));
428    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
429
430    if let Some(ref apikey) = configuration.api_key {
431        let key = apikey.key.clone();
432        let value = match apikey.prefix {
433            Some(ref prefix) => format!("{} {}", prefix, key),
434            None => key,
435        };
436        req_builder = req_builder.query(&[("access_token", value)]);
437    }
438    if let Some(ref apikey) = configuration.api_key {
439        let key = apikey.key.clone();
440        let value = match apikey.prefix {
441            Some(ref prefix) => format!("{} {}", prefix, key),
442            None => key,
443        };
444        req_builder = req_builder.query(&[("sudo", value)]);
445    }
446    if let Some(ref apikey) = configuration.api_key {
447        let key = apikey.key.clone();
448        let value = match apikey.prefix {
449            Some(ref prefix) => format!("{} {}", prefix, key),
450            None => key,
451        };
452        req_builder = req_builder.query(&[("token", value)]);
453    }
454    if let Some(ref user_agent) = configuration.user_agent {
455        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
456    }
457    if let Some(ref apikey) = configuration.api_key {
458        let key = apikey.key.clone();
459        let value = match apikey.prefix {
460            Some(ref prefix) => format!("{} {}", prefix, key),
461            None => key,
462        };
463        req_builder = req_builder.header("X-GITEA-OTP", value);
464    };
465    if let Some(ref apikey) = configuration.api_key {
466        let key = apikey.key.clone();
467        let value = match apikey.prefix {
468            Some(ref prefix) => format!("{} {}", prefix, key),
469            None => key,
470        };
471        req_builder = req_builder.header("Authorization", value);
472    };
473    if let Some(ref apikey) = configuration.api_key {
474        let key = apikey.key.clone();
475        let value = match apikey.prefix {
476            Some(ref prefix) => format!("{} {}", prefix, key),
477            None => key,
478        };
479        req_builder = req_builder.header("Sudo", value);
480    };
481    if let Some(ref auth_conf) = configuration.basic_auth {
482        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
483    };
484
485    let req = req_builder.build()?;
486    let resp = configuration.client.execute(req).await?;
487
488    let status = resp.status();
489    let content_type = resp
490        .headers()
491        .get("content-type")
492        .and_then(|v| v.to_str().ok())
493        .unwrap_or("application/octet-stream");
494    let content_type = super::ContentType::from(content_type);
495
496    if !status.is_client_error() && !status.is_server_error() {
497        let content = resp.text().await?;
498        match content_type {
499            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
500            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `Vec&lt;models::PackageFile&gt;`"))),
501            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `Vec&lt;models::PackageFile&gt;`")))),
502        }
503    } else {
504        let content = resp.text().await?;
505        let entity: Option<ListPackageFilesError> = serde_json::from_str(&content).ok();
506        Err(Error::ResponseError(ResponseContent { status, content, entity }))
507    }
508}
509
510pub async fn list_package_versions(configuration: &configuration::Configuration, owner: &str, r#type: &str, name: &str, page: Option<i32>, limit: Option<i32>) -> Result<Vec<models::Package>, Error<ListPackageVersionsError>> {
511    // add a prefix to parameters to efficiently prevent name collisions
512    let p_path_owner = owner;
513    let p_path_type = r#type;
514    let p_path_name = name;
515    let p_query_page = page;
516    let p_query_limit = limit;
517
518    let uri_str = format!("{}/packages/{owner}/{type}/{name}", configuration.base_path, owner=crate::apis::urlencode(p_path_owner), type=crate::apis::urlencode(p_path_type), name=crate::apis::urlencode(p_path_name));
519    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
520
521    if let Some(ref param_value) = p_query_page {
522        req_builder = req_builder.query(&[("page", &param_value.to_string())]);
523    }
524    if let Some(ref param_value) = p_query_limit {
525        req_builder = req_builder.query(&[("limit", &param_value.to_string())]);
526    }
527    if let Some(ref apikey) = configuration.api_key {
528        let key = apikey.key.clone();
529        let value = match apikey.prefix {
530            Some(ref prefix) => format!("{} {}", prefix, key),
531            None => key,
532        };
533        req_builder = req_builder.query(&[("access_token", value)]);
534    }
535    if let Some(ref apikey) = configuration.api_key {
536        let key = apikey.key.clone();
537        let value = match apikey.prefix {
538            Some(ref prefix) => format!("{} {}", prefix, key),
539            None => key,
540        };
541        req_builder = req_builder.query(&[("sudo", value)]);
542    }
543    if let Some(ref apikey) = configuration.api_key {
544        let key = apikey.key.clone();
545        let value = match apikey.prefix {
546            Some(ref prefix) => format!("{} {}", prefix, key),
547            None => key,
548        };
549        req_builder = req_builder.query(&[("token", value)]);
550    }
551    if let Some(ref user_agent) = configuration.user_agent {
552        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
553    }
554    if let Some(ref apikey) = configuration.api_key {
555        let key = apikey.key.clone();
556        let value = match apikey.prefix {
557            Some(ref prefix) => format!("{} {}", prefix, key),
558            None => key,
559        };
560        req_builder = req_builder.header("X-GITEA-OTP", value);
561    };
562    if let Some(ref apikey) = configuration.api_key {
563        let key = apikey.key.clone();
564        let value = match apikey.prefix {
565            Some(ref prefix) => format!("{} {}", prefix, key),
566            None => key,
567        };
568        req_builder = req_builder.header("Authorization", value);
569    };
570    if let Some(ref apikey) = configuration.api_key {
571        let key = apikey.key.clone();
572        let value = match apikey.prefix {
573            Some(ref prefix) => format!("{} {}", prefix, key),
574            None => key,
575        };
576        req_builder = req_builder.header("Sudo", value);
577    };
578    if let Some(ref auth_conf) = configuration.basic_auth {
579        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
580    };
581
582    let req = req_builder.build()?;
583    let resp = configuration.client.execute(req).await?;
584
585    let status = resp.status();
586    let content_type = resp
587        .headers()
588        .get("content-type")
589        .and_then(|v| v.to_str().ok())
590        .unwrap_or("application/octet-stream");
591    let content_type = super::ContentType::from(content_type);
592
593    if !status.is_client_error() && !status.is_server_error() {
594        let content = resp.text().await?;
595        match content_type {
596            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
597            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `Vec&lt;models::Package&gt;`"))),
598            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `Vec&lt;models::Package&gt;`")))),
599        }
600    } else {
601        let content = resp.text().await?;
602        let entity: Option<ListPackageVersionsError> = serde_json::from_str(&content).ok();
603        Err(Error::ResponseError(ResponseContent { status, content, entity }))
604    }
605}
606
607pub async fn list_packages(configuration: &configuration::Configuration, owner: &str, page: Option<i32>, limit: Option<i32>, r#type: Option<&str>, q: Option<&str>) -> Result<Vec<models::Package>, Error<ListPackagesError>> {
608    // add a prefix to parameters to efficiently prevent name collisions
609    let p_path_owner = owner;
610    let p_query_page = page;
611    let p_query_limit = limit;
612    let p_query_type = r#type;
613    let p_query_q = q;
614
615    let uri_str = format!("{}/packages/{owner}", configuration.base_path, owner=crate::apis::urlencode(p_path_owner));
616    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
617
618    if let Some(ref param_value) = p_query_page {
619        req_builder = req_builder.query(&[("page", &param_value.to_string())]);
620    }
621    if let Some(ref param_value) = p_query_limit {
622        req_builder = req_builder.query(&[("limit", &param_value.to_string())]);
623    }
624    if let Some(ref param_value) = p_query_type {
625        req_builder = req_builder.query(&[("type", &param_value.to_string())]);
626    }
627    if let Some(ref param_value) = p_query_q {
628        req_builder = req_builder.query(&[("q", &param_value.to_string())]);
629    }
630    if let Some(ref apikey) = configuration.api_key {
631        let key = apikey.key.clone();
632        let value = match apikey.prefix {
633            Some(ref prefix) => format!("{} {}", prefix, key),
634            None => key,
635        };
636        req_builder = req_builder.query(&[("access_token", value)]);
637    }
638    if let Some(ref apikey) = configuration.api_key {
639        let key = apikey.key.clone();
640        let value = match apikey.prefix {
641            Some(ref prefix) => format!("{} {}", prefix, key),
642            None => key,
643        };
644        req_builder = req_builder.query(&[("sudo", value)]);
645    }
646    if let Some(ref apikey) = configuration.api_key {
647        let key = apikey.key.clone();
648        let value = match apikey.prefix {
649            Some(ref prefix) => format!("{} {}", prefix, key),
650            None => key,
651        };
652        req_builder = req_builder.query(&[("token", value)]);
653    }
654    if let Some(ref user_agent) = configuration.user_agent {
655        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
656    }
657    if let Some(ref apikey) = configuration.api_key {
658        let key = apikey.key.clone();
659        let value = match apikey.prefix {
660            Some(ref prefix) => format!("{} {}", prefix, key),
661            None => key,
662        };
663        req_builder = req_builder.header("X-GITEA-OTP", value);
664    };
665    if let Some(ref apikey) = configuration.api_key {
666        let key = apikey.key.clone();
667        let value = match apikey.prefix {
668            Some(ref prefix) => format!("{} {}", prefix, key),
669            None => key,
670        };
671        req_builder = req_builder.header("Authorization", value);
672    };
673    if let Some(ref apikey) = configuration.api_key {
674        let key = apikey.key.clone();
675        let value = match apikey.prefix {
676            Some(ref prefix) => format!("{} {}", prefix, key),
677            None => key,
678        };
679        req_builder = req_builder.header("Sudo", value);
680    };
681    if let Some(ref auth_conf) = configuration.basic_auth {
682        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
683    };
684
685    let req = req_builder.build()?;
686    let resp = configuration.client.execute(req).await?;
687
688    let status = resp.status();
689    let content_type = resp
690        .headers()
691        .get("content-type")
692        .and_then(|v| v.to_str().ok())
693        .unwrap_or("application/octet-stream");
694    let content_type = super::ContentType::from(content_type);
695
696    if !status.is_client_error() && !status.is_server_error() {
697        let content = resp.text().await?;
698        match content_type {
699            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
700            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `Vec&lt;models::Package&gt;`"))),
701            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `Vec&lt;models::Package&gt;`")))),
702        }
703    } else {
704        let content = resp.text().await?;
705        let entity: Option<ListPackagesError> = serde_json::from_str(&content).ok();
706        Err(Error::ResponseError(ResponseContent { status, content, entity }))
707    }
708}
709
710pub async fn unlink_package(configuration: &configuration::Configuration, owner: &str, r#type: &str, name: &str) -> Result<(), Error<UnlinkPackageError>> {
711    // add a prefix to parameters to efficiently prevent name collisions
712    let p_path_owner = owner;
713    let p_path_type = r#type;
714    let p_path_name = name;
715
716    let uri_str = format!("{}/packages/{owner}/{type}/{name}/-/unlink", configuration.base_path, owner=crate::apis::urlencode(p_path_owner), type=crate::apis::urlencode(p_path_type), name=crate::apis::urlencode(p_path_name));
717    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
718
719    if let Some(ref apikey) = configuration.api_key {
720        let key = apikey.key.clone();
721        let value = match apikey.prefix {
722            Some(ref prefix) => format!("{} {}", prefix, key),
723            None => key,
724        };
725        req_builder = req_builder.query(&[("access_token", value)]);
726    }
727    if let Some(ref apikey) = configuration.api_key {
728        let key = apikey.key.clone();
729        let value = match apikey.prefix {
730            Some(ref prefix) => format!("{} {}", prefix, key),
731            None => key,
732        };
733        req_builder = req_builder.query(&[("sudo", value)]);
734    }
735    if let Some(ref apikey) = configuration.api_key {
736        let key = apikey.key.clone();
737        let value = match apikey.prefix {
738            Some(ref prefix) => format!("{} {}", prefix, key),
739            None => key,
740        };
741        req_builder = req_builder.query(&[("token", value)]);
742    }
743    if let Some(ref user_agent) = configuration.user_agent {
744        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
745    }
746    if let Some(ref apikey) = configuration.api_key {
747        let key = apikey.key.clone();
748        let value = match apikey.prefix {
749            Some(ref prefix) => format!("{} {}", prefix, key),
750            None => key,
751        };
752        req_builder = req_builder.header("X-GITEA-OTP", value);
753    };
754    if let Some(ref apikey) = configuration.api_key {
755        let key = apikey.key.clone();
756        let value = match apikey.prefix {
757            Some(ref prefix) => format!("{} {}", prefix, key),
758            None => key,
759        };
760        req_builder = req_builder.header("Authorization", value);
761    };
762    if let Some(ref apikey) = configuration.api_key {
763        let key = apikey.key.clone();
764        let value = match apikey.prefix {
765            Some(ref prefix) => format!("{} {}", prefix, key),
766            None => key,
767        };
768        req_builder = req_builder.header("Sudo", value);
769    };
770    if let Some(ref auth_conf) = configuration.basic_auth {
771        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
772    };
773
774    let req = req_builder.build()?;
775    let resp = configuration.client.execute(req).await?;
776
777    let status = resp.status();
778
779    if !status.is_client_error() && !status.is_server_error() {
780        Ok(())
781    } else {
782        let content = resp.text().await?;
783        let entity: Option<UnlinkPackageError> = serde_json::from_str(&content).ok();
784        Err(Error::ResponseError(ResponseContent { status, content, entity }))
785    }
786}
787