thunderstore_api/apis/v2/
package.rs

1////////////////////////////////////////////////////////////////////////////////
2// This Source Code Form is subject to the terms of the Mozilla Public         /
3// License, v. 2.0. If a copy of the MPL was not distributed with this         /
4// file, You can obtain one at https://mozilla.org/MPL/2.0/.                   /
5////////////////////////////////////////////////////////////////////////////////
6
7use crate::apis::configuration::Configuration;
8use crate::apis::{urlencode, Error, ResponseContent};
9
10use crate::models::v2::package;
11
12/// struct for typed errors of method [`experimental_package_read`]
13#[derive(Debug, Clone, Serialize, Deserialize)]
14#[serde(untagged)]
15pub enum ReadError {
16    UnknownValue(serde_json::Value),
17}
18
19/// struct for typed errors of method [`experimental_package_version_read`]
20#[derive(Debug, Clone, Serialize, Deserialize)]
21#[serde(untagged)]
22pub enum VersionReadError {
23    UnknownValue(serde_json::Value),
24}
25
26/// struct for typed errors of method [`api_experimental_package_list`]
27#[derive(Debug, Clone, Serialize, Deserialize)]
28#[serde(untagged)]
29pub enum ListError {
30    UnknownValue(serde_json::Value),
31}
32
33/// Get a single package
34pub async fn read(
35    configuration: &Configuration,
36    name: &str,
37    namespace: &str,
38) -> Result<package::Package, Error<ReadError>> {
39    let local_var_configuration = configuration;
40
41    let local_var_client = &local_var_configuration.client;
42
43    let local_var_uri_str = format!(
44        "{}/api/experimental/package/{namespace}/{name}/",
45        local_var_configuration.base_path,
46        name = urlencode(name),
47        namespace = urlencode(namespace)
48    );
49    let mut local_var_req_builder =
50        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
51
52    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
53        local_var_req_builder =
54            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
55    }
56    if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {
57        local_var_req_builder = local_var_req_builder
58            .basic_auth(local_var_auth_conf.0.clone(), local_var_auth_conf.1.clone());
59    };
60
61    let local_var_req = local_var_req_builder.build()?;
62    let local_var_resp = local_var_client.execute(local_var_req).await?;
63
64    let local_var_status = local_var_resp.status();
65    let local_var_content = local_var_resp.text().await?;
66
67    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
68        serde_json::from_str(&local_var_content).map_err(Error::from)
69    } else {
70        let local_var_entity: Option<ReadError> = serde_json::from_str(&local_var_content).ok();
71        let local_var_error = ResponseContent {
72            status: local_var_status,
73            content: local_var_content,
74            entity: local_var_entity,
75        };
76        Err(Error::ResponseError(local_var_error))
77    }
78}
79
80/// Get a single package version
81pub async fn read_version(
82    configuration: &Configuration,
83    name: &str,
84    namespace: &str,
85    version: &str,
86) -> Result<package::Version, Error<VersionReadError>> {
87    let local_var_configuration = configuration;
88
89    let local_var_client = &local_var_configuration.client;
90
91    let local_var_uri_str = format!(
92        "{}/api/experimental/package/{namespace}/{name}/{version}/",
93        local_var_configuration.base_path,
94        name = urlencode(name),
95        namespace = urlencode(namespace),
96        version = urlencode(version)
97    );
98    let mut local_var_req_builder =
99        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 =
103            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
104    }
105    if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {
106        local_var_req_builder = local_var_req_builder
107            .basic_auth(local_var_auth_conf.0.clone(), local_var_auth_conf.1.clone());
108    };
109
110    let local_var_req = local_var_req_builder.build()?;
111    let local_var_resp = local_var_client.execute(local_var_req).await?;
112
113    let local_var_status = local_var_resp.status();
114    let local_var_content = local_var_resp.text().await?;
115
116    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
117        serde_json::from_str(&local_var_content).map_err(Error::from)
118    } else {
119        let local_var_entity: Option<VersionReadError> =
120            serde_json::from_str(&local_var_content).ok();
121        let local_var_error = ResponseContent {
122            status: local_var_status,
123            content: local_var_content,
124            entity: local_var_entity,
125        };
126        Err(Error::ResponseError(local_var_error))
127    }
128}
129
130/// Lists all available packages
131pub async fn list(
132    configuration: &Configuration,
133    cursor: Option<&str>,
134) -> Result<package::ListResponse, Error<ListError>> {
135    let local_var_configuration = configuration;
136
137    let local_var_client = &local_var_configuration.client;
138
139    let local_var_uri_str = format!(
140        "{}/api/experimental/package/",
141        local_var_configuration.base_path
142    );
143    let mut local_var_req_builder =
144        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
145
146    if let Some(local_var_str) = cursor {
147        local_var_req_builder =
148            local_var_req_builder.query(&[("cursor", &local_var_str.to_string())]);
149    }
150    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
151        local_var_req_builder =
152            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
153    }
154    if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {
155        local_var_req_builder = local_var_req_builder
156            .basic_auth(local_var_auth_conf.0.clone(), local_var_auth_conf.1.clone());
157    };
158
159    let local_var_req = local_var_req_builder.build()?;
160    let local_var_resp = local_var_client.execute(local_var_req).await?;
161
162    let local_var_status = local_var_resp.status();
163    let local_var_content = local_var_resp.text().await?;
164
165    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
166        serde_json::from_str(&local_var_content).map_err(Error::from)
167    } else {
168        let local_var_entity: Option<ListError> = serde_json::from_str(&local_var_content).ok();
169        let local_var_error = ResponseContent {
170            status: local_var_status,
171            content: local_var_content,
172            entity: local_var_entity,
173        };
174        Err(Error::ResponseError(local_var_error))
175    }
176}