1use std::sync::Arc;
10
11use async_trait::async_trait;
12use reqwest;
13use serde::{Deserialize, Serialize};
14
15use super::{configuration, Error};
16use crate::apis::ResponseContent;
17use crate::models;
18
19#[async_trait]
20pub trait KeysApi: Send + Sync {
21 async fn create_key(&self, params: CreateKeyParams) -> Result<models::ApiKey, Error<CreateKeyError>>;
22 async fn delete_key(&self, params: DeleteKeyParams) -> Result<models::ApiKey, Error<DeleteKeyError>>;
23 async fn get_key(&self, params: GetKeyParams) -> Result<models::ApiKey, Error<GetKeyError>>;
24 async fn get_keys(&self) -> Result<models::ApiKeysResponse, Error<GetKeysError>>;
25}
26
27pub struct KeysApiClient {
28 configuration: Arc<configuration::Configuration>,
29}
30
31impl KeysApiClient {
32 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
33 Self { configuration }
34 }
35}
36
37#[derive(Clone, Debug)]
39#[cfg_attr(feature = "bon", derive(::bon::Builder))]
40pub struct CreateKeyParams {
41 pub api_key_schema: Option<models::ApiKeySchema>,
43}
44
45#[derive(Clone, Debug)]
47#[cfg_attr(feature = "bon", derive(::bon::Builder))]
48pub struct DeleteKeyParams {
49 pub key_id: i64,
51}
52
53#[derive(Clone, Debug)]
55#[cfg_attr(feature = "bon", derive(::bon::Builder))]
56pub struct GetKeyParams {
57 pub key_id: i64,
59}
60
61#[async_trait]
62impl KeysApi for KeysApiClient {
63 async fn create_key(&self, params: CreateKeyParams) -> Result<models::ApiKey, Error<CreateKeyError>> {
68 let CreateKeyParams { api_key_schema } = params;
69
70 let local_var_configuration = &self.configuration;
71
72 let local_var_client = &local_var_configuration.client;
73
74 let local_var_uri_str = format!("{}/keys", local_var_configuration.base_path);
75 let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
76
77 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
78 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
79 }
80 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
81 let local_var_key = local_var_apikey.key.clone();
82 let local_var_value = match local_var_apikey.prefix {
83 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
84 None => local_var_key,
85 };
86 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
87 };
88 local_var_req_builder = local_var_req_builder.json(&api_key_schema);
89
90 let local_var_req = local_var_req_builder.build()?;
91 let local_var_resp = local_var_client.execute(local_var_req).await?;
92
93 let local_var_status = local_var_resp.status();
94 let local_var_content = local_var_resp.text().await?;
95
96 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
97 serde_json::from_str(&local_var_content).map_err(Error::from)
98 } else {
99 let local_var_entity: Option<CreateKeyError> = serde_json::from_str(&local_var_content).ok();
100 let local_var_error = ResponseContent {
101 status: local_var_status,
102 content: local_var_content,
103 entity: local_var_entity,
104 };
105 Err(Error::ResponseError(local_var_error))
106 }
107 }
108
109 async fn delete_key(&self, params: DeleteKeyParams) -> Result<models::ApiKey, Error<DeleteKeyError>> {
110 let DeleteKeyParams { key_id } = params;
111
112 let local_var_configuration = &self.configuration;
113
114 let local_var_client = &local_var_configuration.client;
115
116 let local_var_uri_str = format!("{}/keys/{keyId}", local_var_configuration.base_path, keyId = key_id);
117 let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
118
119 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
120 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
121 }
122 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
123 let local_var_key = local_var_apikey.key.clone();
124 let local_var_value = match local_var_apikey.prefix {
125 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
126 None => local_var_key,
127 };
128 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
129 };
130
131 let local_var_req = local_var_req_builder.build()?;
132 let local_var_resp = local_var_client.execute(local_var_req).await?;
133
134 let local_var_status = local_var_resp.status();
135 let local_var_content = local_var_resp.text().await?;
136
137 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
138 serde_json::from_str(&local_var_content).map_err(Error::from)
139 } else {
140 let local_var_entity: Option<DeleteKeyError> = serde_json::from_str(&local_var_content).ok();
141 let local_var_error = ResponseContent {
142 status: local_var_status,
143 content: local_var_content,
144 entity: local_var_entity,
145 };
146 Err(Error::ResponseError(local_var_error))
147 }
148 }
149
150 async fn get_key(&self, params: GetKeyParams) -> Result<models::ApiKey, Error<GetKeyError>> {
154 let GetKeyParams { key_id } = params;
155
156 let local_var_configuration = &self.configuration;
157
158 let local_var_client = &local_var_configuration.client;
159
160 let local_var_uri_str = format!("{}/keys/{keyId}", local_var_configuration.base_path, keyId = key_id);
161 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
162
163 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
164 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
165 }
166 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
167 let local_var_key = local_var_apikey.key.clone();
168 let local_var_value = match local_var_apikey.prefix {
169 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
170 None => local_var_key,
171 };
172 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
173 };
174
175 let local_var_req = local_var_req_builder.build()?;
176 let local_var_resp = local_var_client.execute(local_var_req).await?;
177
178 let local_var_status = local_var_resp.status();
179 let local_var_content = local_var_resp.text().await?;
180
181 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
182 serde_json::from_str(&local_var_content).map_err(Error::from)
183 } else {
184 let local_var_entity: Option<GetKeyError> = serde_json::from_str(&local_var_content).ok();
185 let local_var_error = ResponseContent {
186 status: local_var_status,
187 content: local_var_content,
188 entity: local_var_entity,
189 };
190 Err(Error::ResponseError(local_var_error))
191 }
192 }
193
194 async fn get_keys(&self) -> Result<models::ApiKeysResponse, Error<GetKeysError>> {
195 let local_var_configuration = &self.configuration;
196
197 let local_var_client = &local_var_configuration.client;
198
199 let local_var_uri_str = format!("{}/keys", local_var_configuration.base_path);
200 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
201
202 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
203 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
204 }
205 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
206 let local_var_key = local_var_apikey.key.clone();
207 let local_var_value = match local_var_apikey.prefix {
208 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
209 None => local_var_key,
210 };
211 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
212 };
213
214 let local_var_req = local_var_req_builder.build()?;
215 let local_var_resp = local_var_client.execute(local_var_req).await?;
216
217 let local_var_status = local_var_resp.status();
218 let local_var_content = local_var_resp.text().await?;
219
220 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
221 serde_json::from_str(&local_var_content).map_err(Error::from)
222 } else {
223 let local_var_entity: Option<GetKeysError> = serde_json::from_str(&local_var_content).ok();
224 let local_var_error = ResponseContent {
225 status: local_var_status,
226 content: local_var_content,
227 entity: local_var_entity,
228 };
229 Err(Error::ResponseError(local_var_error))
230 }
231 }
232}
233
234#[derive(Debug, Clone, Serialize, Deserialize)]
236#[serde(untagged)]
237pub enum CreateKeyError {
238 Status400(models::ApiResponse),
239 Status409(models::ApiResponse),
240 UnknownValue(serde_json::Value),
241}
242
243#[derive(Debug, Clone, Serialize, Deserialize)]
245#[serde(untagged)]
246pub enum DeleteKeyError {
247 Status400(models::ApiResponse),
248 Status404(models::ApiResponse),
249 UnknownValue(serde_json::Value),
250}
251
252#[derive(Debug, Clone, Serialize, Deserialize)]
254#[serde(untagged)]
255pub enum GetKeyError {
256 Status404(models::ApiResponse),
257 UnknownValue(serde_json::Value),
258}
259
260#[derive(Debug, Clone, Serialize, Deserialize)]
262#[serde(untagged)]
263pub enum GetKeysError {
264 UnknownValue(serde_json::Value),
265}