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 AnalyticsApi: Send + Sync {
21 async fn create_analytics_event(
22 &self,
23 params: CreateAnalyticsEventParams,
24 ) -> Result<models::AnalyticsEventCreateResponse, Error<CreateAnalyticsEventError>>;
25 async fn create_analytics_rule(
26 &self,
27 params: CreateAnalyticsRuleParams,
28 ) -> Result<models::AnalyticsRuleSchema, Error<CreateAnalyticsRuleError>>;
29 async fn delete_analytics_rule(
30 &self,
31 params: DeleteAnalyticsRuleParams,
32 ) -> Result<models::AnalyticsRuleDeleteResponse, Error<DeleteAnalyticsRuleError>>;
33 async fn retrieve_analytics_rule(
34 &self,
35 params: RetrieveAnalyticsRuleParams,
36 ) -> Result<models::AnalyticsRuleSchema, Error<RetrieveAnalyticsRuleError>>;
37 async fn retrieve_analytics_rules(
38 &self,
39 ) -> Result<models::AnalyticsRulesRetrieveSchema, Error<RetrieveAnalyticsRulesError>>;
40 async fn upsert_analytics_rule(
41 &self,
42 params: UpsertAnalyticsRuleParams,
43 ) -> Result<models::AnalyticsRuleSchema, Error<UpsertAnalyticsRuleError>>;
44}
45
46pub struct AnalyticsApiClient {
47 configuration: Arc<configuration::Configuration>,
48}
49
50impl AnalyticsApiClient {
51 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
52 Self { configuration }
53 }
54}
55
56#[derive(Clone, Debug)]
58#[cfg_attr(feature = "bon", derive(::bon::Builder))]
59pub struct CreateAnalyticsEventParams {
60 pub analytics_event_create_schema: models::AnalyticsEventCreateSchema,
62}
63
64#[derive(Clone, Debug)]
66#[cfg_attr(feature = "bon", derive(::bon::Builder))]
67pub struct CreateAnalyticsRuleParams {
68 pub analytics_rule_schema: models::AnalyticsRuleSchema,
70}
71
72#[derive(Clone, Debug)]
74#[cfg_attr(feature = "bon", derive(::bon::Builder))]
75pub struct DeleteAnalyticsRuleParams {
76 pub rule_name: String,
78}
79
80#[derive(Clone, Debug)]
82#[cfg_attr(feature = "bon", derive(::bon::Builder))]
83pub struct RetrieveAnalyticsRuleParams {
84 pub rule_name: String,
86}
87
88#[derive(Clone, Debug)]
90#[cfg_attr(feature = "bon", derive(::bon::Builder))]
91pub struct UpsertAnalyticsRuleParams {
92 pub rule_name: String,
94 pub analytics_rule_upsert_schema: models::AnalyticsRuleUpsertSchema,
96}
97
98#[async_trait]
99impl AnalyticsApi for AnalyticsApiClient {
100 async fn create_analytics_event(
103 &self,
104 params: CreateAnalyticsEventParams,
105 ) -> Result<models::AnalyticsEventCreateResponse, Error<CreateAnalyticsEventError>> {
106 let CreateAnalyticsEventParams {
107 analytics_event_create_schema,
108 } = params;
109
110 let local_var_configuration = &self.configuration;
111
112 let local_var_client = &local_var_configuration.client;
113
114 let local_var_uri_str = format!("{}/analytics/events", local_var_configuration.base_path);
115 let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
116
117 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
118 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
119 }
120 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
121 let local_var_key = local_var_apikey.key.clone();
122 let local_var_value = match local_var_apikey.prefix {
123 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
124 None => local_var_key,
125 };
126 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
127 };
128 local_var_req_builder = local_var_req_builder.json(&analytics_event_create_schema);
129
130 let local_var_req = local_var_req_builder.build()?;
131 let local_var_resp = local_var_client.execute(local_var_req).await?;
132
133 let local_var_status = local_var_resp.status();
134 let local_var_content = local_var_resp.text().await?;
135
136 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
137 serde_json::from_str(&local_var_content).map_err(Error::from)
138 } else {
139 let local_var_entity: Option<CreateAnalyticsEventError> = serde_json::from_str(&local_var_content).ok();
140 let local_var_error = ResponseContent {
141 status: local_var_status,
142 content: local_var_content,
143 entity: local_var_entity,
144 };
145 Err(Error::ResponseError(local_var_error))
146 }
147 }
148
149 async fn create_analytics_rule(
152 &self,
153 params: CreateAnalyticsRuleParams,
154 ) -> Result<models::AnalyticsRuleSchema, Error<CreateAnalyticsRuleError>> {
155 let CreateAnalyticsRuleParams { analytics_rule_schema } = params;
156
157 let local_var_configuration = &self.configuration;
158
159 let local_var_client = &local_var_configuration.client;
160
161 let local_var_uri_str = format!("{}/analytics/rules", local_var_configuration.base_path);
162 let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
163
164 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
165 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
166 }
167 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
168 let local_var_key = local_var_apikey.key.clone();
169 let local_var_value = match local_var_apikey.prefix {
170 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
171 None => local_var_key,
172 };
173 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
174 };
175 local_var_req_builder = local_var_req_builder.json(&analytics_rule_schema);
176
177 let local_var_req = local_var_req_builder.build()?;
178 let local_var_resp = local_var_client.execute(local_var_req).await?;
179
180 let local_var_status = local_var_resp.status();
181 let local_var_content = local_var_resp.text().await?;
182
183 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
184 serde_json::from_str(&local_var_content).map_err(Error::from)
185 } else {
186 let local_var_entity: Option<CreateAnalyticsRuleError> = serde_json::from_str(&local_var_content).ok();
187 let local_var_error = ResponseContent {
188 status: local_var_status,
189 content: local_var_content,
190 entity: local_var_entity,
191 };
192 Err(Error::ResponseError(local_var_error))
193 }
194 }
195
196 async fn delete_analytics_rule(
198 &self,
199 params: DeleteAnalyticsRuleParams,
200 ) -> Result<models::AnalyticsRuleDeleteResponse, Error<DeleteAnalyticsRuleError>> {
201 let DeleteAnalyticsRuleParams { rule_name } = params;
202
203 let local_var_configuration = &self.configuration;
204
205 let local_var_client = &local_var_configuration.client;
206
207 let local_var_uri_str = format!(
208 "{}/analytics/rules/{ruleName}",
209 local_var_configuration.base_path,
210 ruleName = crate::apis::urlencode(rule_name)
211 );
212 let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
213
214 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
215 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
216 }
217 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
218 let local_var_key = local_var_apikey.key.clone();
219 let local_var_value = match local_var_apikey.prefix {
220 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
221 None => local_var_key,
222 };
223 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
224 };
225
226 let local_var_req = local_var_req_builder.build()?;
227 let local_var_resp = local_var_client.execute(local_var_req).await?;
228
229 let local_var_status = local_var_resp.status();
230 let local_var_content = local_var_resp.text().await?;
231
232 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
233 serde_json::from_str(&local_var_content).map_err(Error::from)
234 } else {
235 let local_var_entity: Option<DeleteAnalyticsRuleError> = serde_json::from_str(&local_var_content).ok();
236 let local_var_error = ResponseContent {
237 status: local_var_status,
238 content: local_var_content,
239 entity: local_var_entity,
240 };
241 Err(Error::ResponseError(local_var_error))
242 }
243 }
244
245 async fn retrieve_analytics_rule(
247 &self,
248 params: RetrieveAnalyticsRuleParams,
249 ) -> Result<models::AnalyticsRuleSchema, Error<RetrieveAnalyticsRuleError>> {
250 let RetrieveAnalyticsRuleParams { rule_name } = params;
251
252 let local_var_configuration = &self.configuration;
253
254 let local_var_client = &local_var_configuration.client;
255
256 let local_var_uri_str = format!(
257 "{}/analytics/rules/{ruleName}",
258 local_var_configuration.base_path,
259 ruleName = crate::apis::urlencode(rule_name)
260 );
261 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
262
263 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
264 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
265 }
266 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
267 let local_var_key = local_var_apikey.key.clone();
268 let local_var_value = match local_var_apikey.prefix {
269 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
270 None => local_var_key,
271 };
272 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
273 };
274
275 let local_var_req = local_var_req_builder.build()?;
276 let local_var_resp = local_var_client.execute(local_var_req).await?;
277
278 let local_var_status = local_var_resp.status();
279 let local_var_content = local_var_resp.text().await?;
280
281 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
282 serde_json::from_str(&local_var_content).map_err(Error::from)
283 } else {
284 let local_var_entity: Option<RetrieveAnalyticsRuleError> = serde_json::from_str(&local_var_content).ok();
285 let local_var_error = ResponseContent {
286 status: local_var_status,
287 content: local_var_content,
288 entity: local_var_entity,
289 };
290 Err(Error::ResponseError(local_var_error))
291 }
292 }
293
294 async fn retrieve_analytics_rules(
296 &self,
297 ) -> Result<models::AnalyticsRulesRetrieveSchema, Error<RetrieveAnalyticsRulesError>> {
298 let local_var_configuration = &self.configuration;
299
300 let local_var_client = &local_var_configuration.client;
301
302 let local_var_uri_str = format!("{}/analytics/rules", local_var_configuration.base_path);
303 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
304
305 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
306 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
307 }
308 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
309 let local_var_key = local_var_apikey.key.clone();
310 let local_var_value = match local_var_apikey.prefix {
311 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
312 None => local_var_key,
313 };
314 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
315 };
316
317 let local_var_req = local_var_req_builder.build()?;
318 let local_var_resp = local_var_client.execute(local_var_req).await?;
319
320 let local_var_status = local_var_resp.status();
321 let local_var_content = local_var_resp.text().await?;
322
323 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
324 serde_json::from_str(&local_var_content).map_err(Error::from)
325 } else {
326 let local_var_entity: Option<RetrieveAnalyticsRulesError> = serde_json::from_str(&local_var_content).ok();
327 let local_var_error = ResponseContent {
328 status: local_var_status,
329 content: local_var_content,
330 entity: local_var_entity,
331 };
332 Err(Error::ResponseError(local_var_error))
333 }
334 }
335
336 async fn upsert_analytics_rule(
338 &self,
339 params: UpsertAnalyticsRuleParams,
340 ) -> Result<models::AnalyticsRuleSchema, Error<UpsertAnalyticsRuleError>> {
341 let UpsertAnalyticsRuleParams {
342 rule_name,
343 analytics_rule_upsert_schema,
344 } = params;
345
346 let local_var_configuration = &self.configuration;
347
348 let local_var_client = &local_var_configuration.client;
349
350 let local_var_uri_str = format!(
351 "{}/analytics/rules/{ruleName}",
352 local_var_configuration.base_path,
353 ruleName = crate::apis::urlencode(rule_name)
354 );
355 let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
356
357 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
358 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
359 }
360 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
361 let local_var_key = local_var_apikey.key.clone();
362 let local_var_value = match local_var_apikey.prefix {
363 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
364 None => local_var_key,
365 };
366 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
367 };
368 local_var_req_builder = local_var_req_builder.json(&analytics_rule_upsert_schema);
369
370 let local_var_req = local_var_req_builder.build()?;
371 let local_var_resp = local_var_client.execute(local_var_req).await?;
372
373 let local_var_status = local_var_resp.status();
374 let local_var_content = local_var_resp.text().await?;
375
376 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
377 serde_json::from_str(&local_var_content).map_err(Error::from)
378 } else {
379 let local_var_entity: Option<UpsertAnalyticsRuleError> = serde_json::from_str(&local_var_content).ok();
380 let local_var_error = ResponseContent {
381 status: local_var_status,
382 content: local_var_content,
383 entity: local_var_entity,
384 };
385 Err(Error::ResponseError(local_var_error))
386 }
387 }
388}
389
390#[derive(Debug, Clone, Serialize, Deserialize)]
392#[serde(untagged)]
393pub enum CreateAnalyticsEventError {
394 Status400(models::ApiResponse),
395 UnknownValue(serde_json::Value),
396}
397
398#[derive(Debug, Clone, Serialize, Deserialize)]
400#[serde(untagged)]
401pub enum CreateAnalyticsRuleError {
402 Status400(models::ApiResponse),
403 UnknownValue(serde_json::Value),
404}
405
406#[derive(Debug, Clone, Serialize, Deserialize)]
408#[serde(untagged)]
409pub enum DeleteAnalyticsRuleError {
410 Status404(models::ApiResponse),
411 UnknownValue(serde_json::Value),
412}
413
414#[derive(Debug, Clone, Serialize, Deserialize)]
416#[serde(untagged)]
417pub enum RetrieveAnalyticsRuleError {
418 Status404(models::ApiResponse),
419 UnknownValue(serde_json::Value),
420}
421
422#[derive(Debug, Clone, Serialize, Deserialize)]
424#[serde(untagged)]
425pub enum RetrieveAnalyticsRulesError {
426 UnknownValue(serde_json::Value),
427}
428
429#[derive(Debug, Clone, Serialize, Deserialize)]
431#[serde(untagged)]
432pub enum UpsertAnalyticsRuleError {
433 Status400(models::ApiResponse),
434 UnknownValue(serde_json::Value),
435}