use {
crate::models,
serde::{Deserialize, Serialize},
};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct DestinationConfigV2 {
#[serde(rename = "type")]
pub r#type: models::AccountTypeV2,
#[serde(rename = "subType", skip_serializing_if = "Option::is_none")]
pub sub_type: Option<Vec<models::AccountIdentifierV2>>,
#[serde(rename = "ids", skip_serializing_if = "Option::is_none")]
pub ids: Option<Vec<models::AccountIdentifierV2>>,
#[serde(rename = "operator")]
pub operator: models::PolicyOperatorV2,
#[serde(rename = "matchFrom", skip_serializing_if = "Option::is_none")]
pub match_from: Option<MatchFrom>,
#[serde(rename = "addressType")]
pub address_type: AddressType,
}
impl DestinationConfigV2 {
pub fn new(
r#type: models::AccountTypeV2,
operator: models::PolicyOperatorV2,
address_type: AddressType,
) -> DestinationConfigV2 {
DestinationConfigV2 {
r#type,
sub_type: None,
ids: None,
operator,
match_from: None,
address_type,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum MatchFrom {
#[serde(rename = "ACCOUNT")]
Account,
#[serde(rename = "SOURCE")]
Source,
}
impl Default for MatchFrom {
fn default() -> MatchFrom {
Self::Account
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum AddressType {
#[serde(rename = "ALL")]
All,
#[serde(rename = "*")]
Star,
#[serde(rename = "WHITELISTED")]
Whitelisted,
#[serde(rename = "ONE_TIME")]
OneTime,
#[serde(rename = "OEC_PARTNER")]
OecPartner,
}
impl Default for AddressType {
fn default() -> AddressType {
Self::All
}
}