manticore_openapi/apis/
search_api.rs1use super::{configuration, Error};
12use crate::{apis::ResponseContent, models};
13use reqwest;
14use serde::{Deserialize, Serialize};
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(untagged)]
19pub enum PercolateError {
20 DefaultResponse(models::ErrorResponse),
21 UnknownValue(serde_json::Value),
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize)]
26#[serde(untagged)]
27pub enum SearchError {
28 DefaultResponse(models::ErrorResponse),
29 UnknownValue(serde_json::Value),
30}
31
32pub async fn percolate(
34 configuration: &configuration::Configuration,
35 index: &str,
36 percolate_request: models::PercolateRequest,
37) -> Result<models::SearchResponse, Error<PercolateError>> {
38 let local_var_configuration = configuration;
39
40 let local_var_client = &local_var_configuration.client;
41
42 let local_var_uri_str = format!(
43 "{}/pq/{index}/search",
44 local_var_configuration.base_path,
45 index = crate::apis::urlencode(index)
46 );
47 let mut local_var_req_builder =
48 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
49
50 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
51 local_var_req_builder =
52 local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
53 }
54 local_var_req_builder = local_var_req_builder.json(&percolate_request);
55
56 let local_var_req = local_var_req_builder.build()?;
57 let local_var_resp = local_var_client.execute(local_var_req).await?;
58
59 let local_var_status = local_var_resp.status();
60 let local_var_content = local_var_resp.text().await?;
61
62 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
63 serde_json::from_str(&local_var_content).map_err(Error::from)
64 } else {
65 let local_var_entity: Option<PercolateError> =
66 serde_json::from_str(&local_var_content).ok();
67 let local_var_error = ResponseContent {
68 status: local_var_status,
69 content: local_var_content,
70 entity: local_var_entity,
71 };
72 Err(Error::ResponseError(local_var_error))
73 }
74}
75
76pub async fn search(
78 configuration: &configuration::Configuration,
79 search_request: models::SearchRequest,
80) -> Result<models::SearchResponse, Error<SearchError>> {
81 let local_var_configuration = configuration;
82
83 let local_var_client = &local_var_configuration.client;
84
85 let local_var_uri_str = format!("{}/search", local_var_configuration.base_path);
86 let mut local_var_req_builder =
87 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
88
89 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
90 local_var_req_builder =
91 local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
92 }
93 local_var_req_builder = local_var_req_builder.json(&search_request);
94 let local_var_req = local_var_req_builder.build()?;
100 let local_var_resp = local_var_client.execute(local_var_req).await?;
101
102 let local_var_status = local_var_resp.status();
103 let local_var_content = local_var_resp.text().await?;
104
105 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
107 serde_json::from_str(&local_var_content).map_err(Error::from)
108 } else {
109 let local_var_entity: Option<SearchError> = serde_json::from_str(&local_var_content).ok();
110 let local_var_error = ResponseContent {
111 status: local_var_status,
112 content: local_var_content,
113 entity: local_var_entity,
114 };
115 Err(Error::ResponseError(local_var_error))
116 }
117}