use crate::ids::{RadarValueListId};
use crate::params::{List, Metadata, Object, Timestamp};
use crate::resources::{RadarValueListItem};
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct RadarValueList {
pub id: RadarValueListId,
#[serde(skip_serializing_if = "Option::is_none")]
pub alias: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub created: Option<Timestamp>,
#[serde(skip_serializing_if = "Option::is_none")]
pub created_by: Option<String>,
#[serde(default)]
pub deleted: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub item_type: Option<RadarValueListItemType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub list_items: Option<List<RadarValueListItem>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub livemode: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Metadata>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<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,
SepaDebitFingerprint,
String,
UsBankAccountFingerprint,
}
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::SepaDebitFingerprint => "sepa_debit_fingerprint",
RadarValueListItemType::String => "string",
RadarValueListItemType::UsBankAccountFingerprint => "us_bank_account_fingerprint",
}
}
}
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)
}
}
impl std::default::Default for RadarValueListItemType {
fn default() -> Self {
Self::CardBin
}
}