use serde_derive::{Deserialize, Serialize};
use crate::ids::RadarValueListId;
use crate::params::{List, Metadata, Object, Timestamp};
use crate::resources::RadarValueListItem;
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct RadarValueList {
pub id: RadarValueListId,
#[serde(skip_serializing_if = "Option::is_none")]
pub alias: Option<Box<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub created: Option<Timestamp>,
#[serde(skip_serializing_if = "Option::is_none")]
pub created_by: Option<Box<String>>,
#[serde(default)]
pub deleted: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub item_type: Option<Box<RadarValueListItemType>>,
#[serde(default)]
pub list_items: List<RadarValueListItem>,
#[serde(skip_serializing_if = "Option::is_none")]
pub livemode: Option<Box<bool>>,
#[serde(default)]
pub metadata: Metadata,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<Box<String>>,
}
impl Object for RadarValueList {
type Id = RadarValueListId;
fn id(&self) -> Self::Id {
self.id.clone()
}
fn object(&self) -> &'static str {
"radar.value_list"
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum RadarValueListItemType {
CardBin,
CardFingerprint,
CaseSensitiveString,
Country,
CustomerId,
Email,
IpAddress,
String,
}
impl RadarValueListItemType {
pub fn as_str(self) -> &'static str {
match self {
RadarValueListItemType::CardBin => "card_bin",
RadarValueListItemType::CardFingerprint => "card_fingerprint",
RadarValueListItemType::CaseSensitiveString => "case_sensitive_string",
RadarValueListItemType::Country => "country",
RadarValueListItemType::CustomerId => "customer_id",
RadarValueListItemType::Email => "email",
RadarValueListItemType::IpAddress => "ip_address",
RadarValueListItemType::String => "string",
}
}
}
impl AsRef<str> for RadarValueListItemType {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for RadarValueListItemType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}