hab_rs_api_client/apis/
templates_api.rs1use super::{Error, configuration};
12use crate::apis::ContentType;
13use crate::{apis::ResponseContent, models};
14use async_trait::async_trait;
15#[cfg(feature = "mockall")]
16use mockall::automock;
17use reqwest;
18use serde::{Deserialize, Serialize, de::Error as _};
19use std::sync::Arc;
20
21#[cfg_attr(feature = "mockall", automock)]
22#[async_trait]
23pub trait TemplatesApi: Send + Sync {
24 async fn get_template_by_id<'template_uid, 'accept_language>(
28 &self,
29 template_uid: &'template_uid str,
30 accept_language: Option<&'accept_language str>,
31 ) -> Result<models::Template, Error<GetTemplateByIdError>>;
32
33 async fn get_templates<'accept_language>(
37 &self,
38 accept_language: Option<&'accept_language str>,
39 ) -> Result<Vec<models::Template>, Error<GetTemplatesError>>;
40}
41
42pub struct TemplatesApiClient {
43 configuration: Arc<configuration::Configuration>,
44}
45
46impl TemplatesApiClient {
47 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
48 Self { configuration }
49 }
50}
51
52#[async_trait]
53impl TemplatesApi for TemplatesApiClient {
54 async fn get_template_by_id<'template_uid, 'accept_language>(
55 &self,
56 template_uid: &'template_uid str,
57 accept_language: Option<&'accept_language str>,
58 ) -> Result<models::Template, Error<GetTemplateByIdError>> {
59 let local_var_configuration = &self.configuration;
60
61 let local_var_client = &local_var_configuration.client;
62
63 let local_var_uri_str = format!(
64 "{}/templates/{templateUID}",
65 local_var_configuration.base_path,
66 templateUID = crate::apis::urlencode(template_uid)
67 );
68 let mut local_var_req_builder =
69 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
70
71 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
72 local_var_req_builder = local_var_req_builder
73 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
74 }
75 if let Some(local_var_param_value) = accept_language {
76 local_var_req_builder =
77 local_var_req_builder.header("Accept-Language", local_var_param_value.to_string());
78 }
79
80 let local_var_req = local_var_req_builder.build()?;
81 let local_var_resp = local_var_client.execute(local_var_req).await?;
82
83 let local_var_status = local_var_resp.status();
84 let local_var_content_type = local_var_resp
85 .headers()
86 .get("content-type")
87 .and_then(|v| v.to_str().ok())
88 .unwrap_or("application/octet-stream");
89 let local_var_content_type = super::ContentType::from(local_var_content_type);
90 let local_var_content = local_var_resp.text().await?;
91
92 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
93 match local_var_content_type {
94 ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
95 ContentType::Text => {
96 return Err(Error::from(serde_json::Error::custom(
97 "Received `text/plain` content type response that cannot be converted to `models::Template`",
98 )));
99 }
100 ContentType::Unsupported(local_var_unknown_type) => {
101 return Err(Error::from(serde_json::Error::custom(format!(
102 "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::Template`"
103 ))));
104 }
105 }
106 } else {
107 let local_var_entity: Option<GetTemplateByIdError> =
108 serde_json::from_str(&local_var_content).ok();
109 let local_var_error = ResponseContent {
110 status: local_var_status,
111 content: local_var_content,
112 entity: local_var_entity,
113 };
114 Err(Error::ResponseError(local_var_error))
115 }
116 }
117
118 async fn get_templates<'accept_language>(
119 &self,
120 accept_language: Option<&'accept_language str>,
121 ) -> Result<Vec<models::Template>, Error<GetTemplatesError>> {
122 let local_var_configuration = &self.configuration;
123
124 let local_var_client = &local_var_configuration.client;
125
126 let local_var_uri_str = format!("{}/templates", local_var_configuration.base_path);
127 let mut local_var_req_builder =
128 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
129
130 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
131 local_var_req_builder = local_var_req_builder
132 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
133 }
134 if let Some(local_var_param_value) = accept_language {
135 local_var_req_builder =
136 local_var_req_builder.header("Accept-Language", local_var_param_value.to_string());
137 }
138
139 let local_var_req = local_var_req_builder.build()?;
140 let local_var_resp = local_var_client.execute(local_var_req).await?;
141
142 let local_var_status = local_var_resp.status();
143 let local_var_content_type = local_var_resp
144 .headers()
145 .get("content-type")
146 .and_then(|v| v.to_str().ok())
147 .unwrap_or("application/octet-stream");
148 let local_var_content_type = super::ContentType::from(local_var_content_type);
149 let local_var_content = local_var_resp.text().await?;
150
151 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
152 match local_var_content_type {
153 ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
154 ContentType::Text => {
155 return Err(Error::from(serde_json::Error::custom(
156 "Received `text/plain` content type response that cannot be converted to `Vec<models::Template>`",
157 )));
158 }
159 ContentType::Unsupported(local_var_unknown_type) => {
160 return Err(Error::from(serde_json::Error::custom(format!(
161 "Received `{local_var_unknown_type}` content type response that cannot be converted to `Vec<models::Template>`"
162 ))));
163 }
164 }
165 } else {
166 let local_var_entity: Option<GetTemplatesError> =
167 serde_json::from_str(&local_var_content).ok();
168 let local_var_error = ResponseContent {
169 status: local_var_status,
170 content: local_var_content,
171 entity: local_var_entity,
172 };
173 Err(Error::ResponseError(local_var_error))
174 }
175 }
176}
177
178#[derive(Debug, Clone, Serialize, Deserialize)]
180#[serde(untagged)]
181pub enum GetTemplateByIdError {
182 Status404(),
183 UnknownValue(serde_json::Value),
184}
185
186#[derive(Debug, Clone, Serialize, Deserialize)]
188#[serde(untagged)]
189pub enum GetTemplatesError {
190 UnknownValue(serde_json::Value),
191}