use rocket::serde::Deserialize;
use validator::Validate;
use super::{checkout::StripeCheckoutSession, date::StripeDate};
#[derive(Debug, Deserialize)]
#[serde(crate = "rocket::serde")]
#[serde(untagged)]
pub enum StripeEventData {
StripeCheckoutObject { object: StripeCheckoutSession },
}
impl Validate for StripeEventData {
fn validate(&self) -> Result<(), validator::ValidationErrors> {
match self {
StripeEventData::StripeCheckoutObject { object } => object.validate(),
}
}
}
#[derive(Debug, Deserialize, Validate)]
#[serde(crate = "rocket::serde")]
pub struct StripeEvent<'d> {
#[validate(contains(pattern = "evt_"))]
pub id: &'d str,
pub created: StripeDate,
#[validate(nested)]
pub data: StripeEventData,
}