Skip to main content

pipedrive_rs/apis/
item_search_api.rs

1/*
2 * Pipedrive API v1
3 *
4 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5 *
6 * The version of the OpenAPI document: 1.0.0
7 * 
8 * Generated by: https://openapi-generator.tech
9 */
10
11
12use reqwest;
13
14use crate::apis::ResponseContent;
15use super::{Error, configuration};
16
17
18/// struct for typed errors of method [`search_item`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum SearchItemError {
22    UnknownValue(serde_json::Value),
23}
24
25/// struct for typed errors of method [`search_item_by_field`]
26#[derive(Debug, Clone, Serialize, Deserialize)]
27#[serde(untagged)]
28pub enum SearchItemByFieldError {
29    UnknownValue(serde_json::Value),
30}
31
32
33/// Performs a search from your choice of item types and fields.
34pub async fn search_item(configuration: &configuration::Configuration, term: &str, item_types: Option<&str>, fields: Option<&str>, search_for_related_items: Option<bool>, exact_match: Option<bool>, include_fields: Option<&str>, start: Option<i32>, limit: Option<i32>) -> Result<crate::models::SearchItemResponse200, Error<SearchItemError>> {
35    let local_var_configuration = configuration;
36
37    let local_var_client = &local_var_configuration.client;
38
39    let local_var_uri_str = format!("{}/itemSearch", local_var_configuration.base_path);
40    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
41
42    local_var_req_builder = local_var_req_builder.query(&[("term", &term.to_string())]);
43    if let Some(ref local_var_str) = item_types {
44        local_var_req_builder = local_var_req_builder.query(&[("item_types", &local_var_str.to_string())]);
45    }
46    if let Some(ref local_var_str) = fields {
47        local_var_req_builder = local_var_req_builder.query(&[("fields", &local_var_str.to_string())]);
48    }
49    if let Some(ref local_var_str) = search_for_related_items {
50        local_var_req_builder = local_var_req_builder.query(&[("search_for_related_items", &local_var_str.to_string())]);
51    }
52    if let Some(ref local_var_str) = exact_match {
53        local_var_req_builder = local_var_req_builder.query(&[("exact_match", &local_var_str.to_string())]);
54    }
55    if let Some(ref local_var_str) = include_fields {
56        local_var_req_builder = local_var_req_builder.query(&[("include_fields", &local_var_str.to_string())]);
57    }
58    if let Some(ref local_var_str) = start {
59        local_var_req_builder = local_var_req_builder.query(&[("start", &local_var_str.to_string())]);
60    }
61    if let Some(ref local_var_str) = limit {
62        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
63    }
64    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
65        let local_var_key = local_var_apikey.key.clone();
66        let local_var_value = match local_var_apikey.prefix {
67            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
68            None => local_var_key,
69        };
70        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
71    }
72    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
73        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
74    }
75    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
76        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
77    };
78
79    let local_var_req = local_var_req_builder.build()?;
80    let local_var_resp = local_var_client.execute(local_var_req).await?;
81
82    let local_var_status = local_var_resp.status();
83    let local_var_content = local_var_resp.text().await?;
84
85    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
86        serde_json::from_str(&local_var_content).map_err(Error::from)
87    } else {
88        let local_var_entity: Option<SearchItemError> = serde_json::from_str(&local_var_content).ok();
89        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
90        Err(Error::ResponseError(local_var_error))
91    }
92}
93
94/// Performs a search from the values of a specific field. Results can either be the distinct values of the field (useful for searching autocomplete field values), or the IDs of actual items (deals, leads, persons, organizations or products).
95pub async fn search_item_by_field(configuration: &configuration::Configuration, term: &str, field_type: &str, field_key: &str, exact_match: Option<bool>, return_item_ids: Option<bool>, start: Option<i32>, limit: Option<i32>) -> Result<crate::models::SearchItemByFieldResponse200, Error<SearchItemByFieldError>> {
96    let local_var_configuration = configuration;
97
98    let local_var_client = &local_var_configuration.client;
99
100    let local_var_uri_str = format!("{}/itemSearch/field", local_var_configuration.base_path);
101    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
102
103    local_var_req_builder = local_var_req_builder.query(&[("term", &term.to_string())]);
104    local_var_req_builder = local_var_req_builder.query(&[("field_type", &field_type.to_string())]);
105    if let Some(ref local_var_str) = exact_match {
106        local_var_req_builder = local_var_req_builder.query(&[("exact_match", &local_var_str.to_string())]);
107    }
108    local_var_req_builder = local_var_req_builder.query(&[("field_key", &field_key.to_string())]);
109    if let Some(ref local_var_str) = return_item_ids {
110        local_var_req_builder = local_var_req_builder.query(&[("return_item_ids", &local_var_str.to_string())]);
111    }
112    if let Some(ref local_var_str) = start {
113        local_var_req_builder = local_var_req_builder.query(&[("start", &local_var_str.to_string())]);
114    }
115    if let Some(ref local_var_str) = limit {
116        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
117    }
118    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
119        let local_var_key = local_var_apikey.key.clone();
120        let local_var_value = match local_var_apikey.prefix {
121            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
122            None => local_var_key,
123        };
124        local_var_req_builder = local_var_req_builder.query(&[("api_token", local_var_value)]);
125    }
126    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
127        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
128    }
129    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
130        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
131    };
132
133    let local_var_req = local_var_req_builder.build()?;
134    let local_var_resp = local_var_client.execute(local_var_req).await?;
135
136    let local_var_status = local_var_resp.status();
137    let local_var_content = local_var_resp.text().await?;
138
139    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
140        serde_json::from_str(&local_var_content).map_err(Error::from)
141    } else {
142        let local_var_entity: Option<SearchItemByFieldError> = serde_json::from_str(&local_var_content).ok();
143        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
144        Err(Error::ResponseError(local_var_error))
145    }
146}
147