smarty_rust_sdk/international_autocomplete_api/
client.rs1use crate::international_autocomplete_api::lookup::Lookup;
2use crate::international_autocomplete_api::suggestion::SuggestionListing;
3use crate::sdk::client::Client;
4use crate::sdk::error::SmartyError;
5use crate::sdk::options::Options;
6use crate::sdk::send_request;
7use reqwest::Method;
8use smarty_rust_proc_macro::smarty_api;
9
10#[smarty_api(
11 api_path = "v2/lookup/",
12 default_url = "https://international-autocomplete.api.smarty.com/",
13 lookup_style(lookup),
14 lookup_type = "Lookup",
15 result_type = "SuggestionListing",
16 custom_send = true
17)]
18pub struct InternationalAutocompleteClient;
19
20impl InternationalAutocompleteClient {
21 pub async fn send(&self, lookup: &mut Lookup) -> Result<(), SmartyError> {
25 let mut url = self.client.url.clone();
26 if lookup.address_id != String::default() {
27 url = url.join(&lookup.address_id)?;
28 }
29 let mut req = self.client.reqwest_client.request(Method::GET, url);
30 req = self.client.build_request(req);
31 req = req.query(&lookup.clone().into_param_array());
32
33 let candidates = send_request::<SuggestionListing>(req).await?;
34
35 lookup.results = candidates;
36
37 Ok(())
38 }
39}