smarty_rust_sdk/international_autocomplete_api/
lookup.rs

1use crate::international_autocomplete_api::suggestion::SuggestionListing;
2use crate::sdk::has_param;
3
4#[derive(Clone, Debug, PartialEq)]
5pub struct Lookup {
6    pub country: String,
7    pub search: String,
8    pub address_id: String,
9    pub max_results: i32,
10    pub include_only_locality: String,
11    pub include_only_postal_code: String,
12    pub results: SuggestionListing,
13}
14
15impl Default for Lookup {
16    fn default() -> Self {
17        Lookup {
18            country: String::default(),
19            search: String::default(),
20            address_id: String::default(),
21            max_results: 5,
22            include_only_locality: "".to_string(),
23            include_only_postal_code: "".to_string(),
24
25            results: SuggestionListing {
26                suggestions: vec![],
27            },
28        }
29    }
30}
31
32impl Lookup {
33    pub(crate) fn into_param_array(self) -> Vec<(String, String)> {
34        vec![
35            has_param("country".to_string(), self.country),
36            has_param("search".to_string(), self.search),
37            has_param("address_id".to_string(), self.address_id),
38            has_param("max_results".to_string(), self.max_results.to_string()),
39            has_param(
40                "include_only_locality".to_string(),
41                self.include_only_locality,
42            ),
43            has_param(
44                "include_only_postal_code".to_string(),
45                self.include_only_postal_code,
46            ),
47        ]
48        .iter()
49        .filter_map(Option::clone)
50        .collect::<Vec<_>>()
51    }
52}