smarty_rust_sdk/us_zipcode_api/
lookup.rs

1use crate::sdk::has_param;
2use crate::us_zipcode_api::candidate::ZipcodeResult;
3use serde::Serialize;
4
5#[derive(Debug, Clone, PartialEq, Serialize, Default)]
6#[serde(default)]
7pub struct Lookup {
8    #[serde(skip_serializing_if = "String::is_empty")]
9    pub city: String,
10    #[serde(skip_serializing_if = "String::is_empty")]
11    pub state: String,
12    #[serde(skip_serializing_if = "String::is_empty")]
13    pub zipcode: String,
14    #[serde(skip_serializing_if = "String::is_empty")]
15    pub input_id: String,
16
17    #[serde(skip_serializing)]
18    pub results: ZipcodeResult,
19}
20
21impl Lookup {
22    pub(crate) fn into_param_array(self) -> Vec<(String, String)> {
23        [
24            has_param("city".to_string(), self.city.clone()),
25            has_param("state".to_string(), self.state.clone()),
26            has_param("zipcode".to_string(), self.zipcode.clone()),
27            has_param("input_id".to_string(), self.input_id),
28        ]
29        .iter()
30        .filter_map(Option::clone)
31        .collect::<Vec<_>>()
32    }
33}