smarty_rust_sdk/international_autocomplete_api/
client.rs

1use 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    /// Uses the lookup and the client in
22    /// order to build a request and send the message
23    /// to the server.
24    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}