smarty_rust_sdk/us_zipcode_api/
lookup.rs1use 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}